gpt4 book ai didi

c++ - 指向没有变量的方法的指针,这段代码是如何工作的?

转载 作者:行者123 更新时间:2023-11-28 01:17:53 25 4
gpt4 key购买 nike

我遇到了一些我不理解的代码。在类 B 中有一个指向不同类 A 的方法的指针,但该指针没有变量。如何在 B 类中调用此方法?这是其他人的一个更大项目的一部分,我想保留现有代码。

class A {
public:
A *root() { return this; }
};

class B {
public:
A *root();
};

我期待这样的事情

A *myA = root();

在 B 类中工作,但我收到链接器错误“未定义对...的引用”。问题更多的是如何调用这个构造,它有什么用以及如何使用它。

最佳答案

在现有评论中,没有B::root() 的实现。也许您的代码在 .h 文件旁边有一个 .cpp.hpp 文件,其中 B::的实现root() 代表 - 或者存在一个带有它的库。

一个有效的实现可以是 A* B::root() { return new A(); }。您可以只用 grep 查找 B::root

要调用B::root(),一个简单的B b; A* as = b.root(); 就足够了。与 A::root() 相同,其中一个简单的调用可以是 A a; A* as = a.root();

class A {
public:
A *root() { return this; }
};

class B {
public:
A *root();
};

A* B::root() { return new A(); }

int main() {
A a;
B b;
A* asa = a.root();
A* asb = b.root();
return 0;
}

关于c++ - 指向没有变量的方法的指针,这段代码是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58047384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com