gpt4 book ai didi

使用另一个类的 typedef 成员时出现 C++ 编译错误

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:08 26 4
gpt4 key购买 nike

以下代码有什么问题。我收到编译错误。我也尝试过 B 类的前向声明。但未能成功。

测试.cpp

#include <memory>
#include <iostream>

namespace api
{

class A
{
public:
typedef std::shared_ptr<A> APtr;
APtr get_a_ptr();
B::BPtr get_b_ptr();
};

class B
{
public:
typedef std::shared_ptr<B> BPtr;
BPtr get_b_ptr();
A::APtr get_a_ptr();
};

}


int main(int argc, char **argv)
{
return 0;
}

最佳答案

这样做:

namespace api
{
class B; // forward declaration

class A
{
public:
typedef std::shared_ptr<A> APtr;
APtr get_a_ptr();
std::shared_ptr<B> get_b_ptr();
};
...
}

问题是您正在向类 B 请求一些东西那还没有被定义。所以使用 std::shared_ptr<B>你会没事的。


更多信息,请阅读:When can I use a forward declaration?

关于使用另一个类的 typedef 成员时出现 C++ 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37364386/

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