绑定两个对象

Tie two objects

我要 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;
}

Since I the two tied objects can change I can't use fixed type, so I''m using templates.

通过更多研究,我发现最好的方法是使用指针。 类 现在都有一个指向绑定对象的内部 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);
}