我想创建一个包含多个对象并处理它们的库。但是,如果对象发生某些事情,那么我希望能够在使用该库的项目中执行其他操作。
以下是我想要做的简要示例:
// Library:
class LibraryClass {
public:
bool Init() { /* Blah. */ }
void Shutdown() { /* Blah blah. */ }
void Update() {
for( int i( 0); i < m_objects.size(); ++i) {
bool somethingHappened = m_objects[i].Update();
if( somethingHappened)
CallBackFunctionToMainProject( &m_objects[i]);
}
}
private:
std::vector<Objects> m_objects;
};
// Project that uses the library:
class Program {
public:
void Run() {
m_libClass = new LibraryClass();
m_libClass.Init();
while( true) {
m_libClass.Update();
OtherUpdateStuff();
}
m_libClass.Shutdown();
delete m_libClass;
}
private:
LibraryClass* m_libClass;
};
void CallBackFunctionToMainProject( Object* obj) {
// Do stuff.
}
正如您所看到的,我希望库调用在主项目中声明的函数,但是如果函数尚未在主项目中声明,我也希望它不会抱怨。
我可以这样做吗?如果是这样,怎么样? (如果可能的话,我想避免将变量传递给库的选项,例如函数指针)。
答案 0 :(得分:0)
有可能的选项,但必须将某些内容传递给库以进行回调。
希望它有所帮助。