我必须使用SFML对象类:Textbox.h
和ErrorProvider.h
,我定义了两个对象TB_Input
(文本框)和EP_Note
(ErrorProvider)。
当Textbox
提升ErrorProvider
时,会产生一个绘制的红色圆圈。
我试图将两者结合起来,让我解释一下:
TB_Input
和EP_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;
}
由于我可以更改两个绑定对象,因此我无法使用固定类型,因此我使用模板。
答案 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);
}