绑定两个对象
Tie two objects
我要 SFML 对象 类:Textbox.h
和 ErrorProvider.h
,我定义了两个对象 TB_Input
(Textbox) 和 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;
}
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);
}
我要 SFML 对象 类:Textbox.h
和 ErrorProvider.h
,我定义了两个对象 TB_Input
(Textbox) 和 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;
}
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);
}