【发布时间】:2014-01-26 15:15:39
【问题描述】:
对不起,如果这个标题措辞不好......但这就是我想要做的......
我有一个结构“screen”,它有一个指向这些函数的指针,这些函数是“Test”类的成员......
typedef struct screen{
...
bool (Test::*drawfunc)(b2World*, objectdata*, actorlist*, camera*);
...
}
class Test{
...
screen* tscreen;
bool Test::draw(b2World* world, objectdata* objects, actorlist* al, camera* cam);
...
}
我像这样在创建我的测试实例“test”时分配drawfunc指针......这对我来说看起来很奇怪,我不完全理解它,但它编译......
Test::Test()
{
...
tscreen->drawfunc=&Test::draw;
...
}
但我无法弄清楚如何在我的 main 中调用 drawfunc 函数......我正在尝试这样,它给出了错误“错误 C2064:术语不计算为采用 4 个参数的函数”
int main (int acrgc, char** argv){
...
Test* test = new Test();
test->tscreen->drawfunc(test->m_world, test->objects, test->tscreen->al, test->tscreen->cam);
...
}
我知道调用是不对的,我从不指定drawfunc从哪个类“Test”实例工作......即使所有变量和指向函数本身的指针都来自实例“test”。 ..
...对于不可避免的“你为什么要这样做?”回复......或者如果没有办法调用该函数或其他东西......我真的只是希望能够将不同的函数分配给“drawfunc”并且我希望这些函数能够使用所有变量在实例“test”中,我可以得到它,所以 drawfunc 指向任何旧函数( bool (drawfunc)(b2World, objectdata*, actorlist*, camera*); ),但它需要能够访问测试实例“test”中的其他变量。所以......真的,不管你怎么做,那也很棒。谢谢。
【问题讨论】:
-
为什么不放一个更简单但完整的示例,将您的问题反映到您的问题中。因为对于你所拥有的,很难给你一个正确的答案。
标签: c++ class pointers struct function-pointers