2016-11-21 10 views
0

私はSFクラスのオブジェクトクラス:Textbox.hErrorProvider.hを持っているので、TB_Input(テキストボックス)とEP_Note(ErrorProvider)という2つのオブジェクトを定義しました。 TextboxErrorProviderになると、赤い円が描画されます。2つのオブジェクトを結ぶ

私はこの2つを結びつけようとしています。 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; 
} 

2縛られたオブジェクトが、私は固定式を使用することはできません変更することができますI以来の私はテンプレートを使用しています。

+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); 
} 
関連する問題