【发布时间】:2012-01-24 17:46:18
【问题描述】:
我刚刚学习 C++,但在指向方法的指针方面遇到了困难。让我们说:
class One {
public:
int Add (int a, int b) {return a+b;}
};
typedef int (One::*pAdd) (int, int);
class Other {
public:
int Next (pAdd funct, int c){ return funct (c, 1);}
};
int main (){
One one;
Other other;
other.Next(one.Add, 2);
return 0;
}
我的 MinGW 报告了一些问题。首先,我没有正确调用函数,因为编译器坚持使用 .* 或 ->* 。不知道如何合并此请求,欢迎提供任何帮助。现在,我可以通过将方法设为静态以使用 c 样式指针或传递对象并从 Next 中调用方法来解决我的问题,但我想了解指向方法的指针。基本上,我很困惑为什么 one.Add 不是可接受的输入。要调用的方法是明确定义的(.Add)并符合我的 typedef。另外,我从 typedef 提供类(一个)的实例,从而提供要在其中执行方法的上下文。但是编译器输出看起来我不仅错过了语法,而且还错过了概念。那么,如何将对象作为上下文作为单个参数传递给方法的指针呢?
【问题讨论】:
-
我刚刚意识到......打开它们并张贴在错误的标签上。我向社区道歉,我该如何删除问题?
-
@gxs 让它被迁移。
-
您好 gxs,版主会收到通知,以便您的问题可以自动移至 StackOverflow。这是程序员,是一个关于软件开发的概念性问题的站点。有关详细信息,请参阅FAQ