我已经阅读了有关此问题的其他线程,但我仍然不知道为什么会出现以下错误: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对象,并将其引用传递给它自己。但是在代码中到处都有
undefined reference to ClientConnection::connect
和undefined reference to ClientConnection::isConnected
的地方。我完全被困住了。
还-当我使用Connector()新建对象
ClientConnection::Connector* connector = client.Connector();
时(客户端是ClientConnection的固定对象),我得到invalid use of non-static member function ‘ClientConnection::Connector* ClientConnection::Connector()’
最佳答案
需要考虑的几件事:
Connector* Connector();
-您要在这里做什么?如果要声明一个指向连接器的指针,请执行Connector* ptr_connector;
或其他操作。您基本上是在调用构造函数,声明一个指针,并且都不给出变量名-这太疯狂了! ClientConnection::Connector* connector = client.Connector();
-这也不起作用。您在类中声明了一个需要客户端连接对象的显式构造函数。但是在这里,您试图创建连接器而不传递任何客户端对象。您没有没有参数的Connector构造函数。 关于c++ - C++嵌套类正在生成对外部类的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11246171/