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

    10-11 15:34