C++嵌套类正在生成对外部类的未定义引用

C++ Nested class is producing undefined references to outer class

本文关键字:对外部 未定义 引用 嵌套 C++      更新时间:2023-10-16

我已经阅读了有关同一问题的其他线程,但我仍然不知道为什么出现以下错误: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;
};

我有一个对外部类的引用。连接器方法会给连接器对象提供新闻,并向其传递对自身的引用。 但是在代码中,我得到undefined reference to ClientConnection::connectundefined reference to ClientConnection::isConnected的任何地方.

我完全被困住了。

另外 - 当我使用 Connector() 来更新一个对象时,ClientConnection::Connector* connector = client.Connector();客户端是 ClientConnection 的实体对象,我得到invalid use of non-static member function ‘ClientConnection::Connector* ClientConnection::Connector()’

需要考虑的几件事:

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

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

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