【发布时间】:2019-09-22 08:24:42
【问题描述】:
我遇到了一些我不理解的代码。在类 B 中有一个指向不同类 A 的方法的指针,但该指针没有变量。如何在 B 类中调用此方法? 这是别人更大项目的一部分,我想保留现有代码。
class A {
public:
A *root() { return this; }
};
class B {
public:
A *root();
};
我期待这样的事情
A *myA = root();
在 B 类内工作,但我收到链接器错误“未定义对 ... 的引用”。问题更多的是如何调用这种构造,它有什么用以及如何使用它。
【问题讨论】:
-
如果是
int,您会感到惊讶吗?从这个意义上说,指针并不特殊。关于你得到的错误,一些研究应该告诉你它意味着什么以及如何解决它。也就是说,您显示的代码中的任何地方都没有“指向方法的指针”。有一个方法(或成员函数)返回一个指针。 -
方法 root() 没有实现。这就是您收到链接器错误的原因。
-
A*只是B::root的返回类型,如果您对此感到困惑的话。