绑两个物体

时间:2016-11-21 17:29:39

标签: c++ object sfml

我必须使用SFML对象类:Textbox.hErrorProvider.h,我定义了两个对象TB_Input(文本框)和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 个答案:

答案 0 :(得分: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);
}