gpt4 book ai didi

C++ 嵌套类正在生成对外部类的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 04:26:53 26 4
gpt4 key购买 nike

我已经阅读了关于相同问题的其他线程,但我仍然不知道为什么会收到以下错误:undefinded reference to 并列出了外部类中的每个方法。

class ClientConnection
{

public:

class Connector

{

public:

Connector(ClientConnection&);
~Connector();

void Connect(unsigned int usleep);
void Stop();
bool isConnected();

private:

void attempt();

ClientConnection& m_client;
unsigned int m_usleep;
bool m_stopRequest;
bool m_isBusy;
boost::shared_ptr<boost::thread> m_thread;

};

Connector* Connector();

bool connect();
bool isConnected();

private:

friend class Connector;
};

我有一个外部类的引用。 Connector 方法更新一个 Connector 对象并将其传递给自身的引用。但是在代码中的任何地方,我都会得到 对 ClientConnection::connect 的 undefined reference 对 ClientConnection::isConnected 的 undefined reference

我完全卡住了。

另外 - 当我使用 Connector() 新建一个对象时,ClientConnection::Connector* connector = client.Connector(); 其中 client 是 ClientConnection 的实体对象,我得到 无效使用非静态成员函数 'ClientConnection::Connector* ClientConnection::Connector()'

最佳答案

需要考虑的几件事:

  1. Connector* Connector(); - 你想在这里做什么?如果您尝试声明一个指向连接器的指针,请执行 Connector* ptr_connector; 或其他操作。您基本上是在调用一个构造函数,声明一个指针,并且没有给任何一个变量名——这太疯狂了!

  2. 您是否真的实现了在嵌套类中看到的功能,如果没有,那就是您的问题所在!另外,您是否为嵌套类正确实现了它们?如果您没有在类中内联实现它们,语法会略有不同。

  3. ClientConnection::Connector* connector = client.Connector(); - 这也不起作用。您在需要客户端连接对象的类中声明了一个显式构造函数。但是在这里,您试图在不传递任何客户端对象的情况下创建连接器。您没有不带参数的连接器构造函数。

关于C++ 嵌套类正在生成对外部类的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11246171/

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