2016-11-21 53 views
0

我必須要SFML對象類:Textbox.hErrorProvider.h,我定義了兩個對象TB_Input(Textbox)和EP_Note(ErrorProvider)。 當Textbox增加ErrorProvider時,它會產生一個繪製的紅色圓圈。綁定兩個對象

我試圖將兩者結合在一起,讓我解釋一下: TB_InputEP_Note都必須記住它們是彼此聯繫在一起的。

的代碼,我現在所擁有的:我需要什麼

//Function to tie 2 objects 
template<typename ObjectType1, typename ObjectType2> 
inline void tie(ObjectType1& obj_1, ObjectType2& obj_2) { 
    obj_1.tieTo(obj_2); 
    obj_2.tieTo(obj_1); 
} 

僞代碼:

// Inside both classes 

template<typename ObjectType> 
void tieTo(ObjectType link_object) { 
    <Unknown Type> variable_that_stores_the_tiedTo_object = link_object; 
} 

因爲我兩個被捆物體可以改變我不能用固定式,所以我使用模板。

+1

你可以有內部指針到每個人,然後使它指向什麼tieds或從....或如果我認識到錯誤,那麼你能做出更多的例子嗎? –

+0

@LorenceHernandez這就是我最終做的。 – Pinco

回答

0

通過做更多的研究,我發現最好的方法是使用指針。 這兩個類現在都有一個指向綁定對象的內部void指針,然後將其解引用並將其用作普通對象。

如果你需要一個更好的主意,我會在這裏留下代碼,也可以隨時問我任何問題。


Button.h

void tieTo(ObjectType& object) { 
    PTR_tiedTo = &object; 

    setPosition(object.getPosition().x + object.getSize().x + EP_offset, 
       object.getPosition().y + (object.getSize().y - radius*2)/2); 
} 

void ErrorProvider::raise(bool value) { 
    raised = value; 
} 


// PTR Definition: 
void *PTR_tiedTo; 

Textbox.h

//Same tieTo() function template toghether with this: 

void Textbox::setEP(bool value) { 
    ErrorProvider *EP_ptr = static_cast<ErrorProvider*>(PTR_tiedTO); 
    EP_ptr->raise(value); 
}