C++嵌套类正在生成对外部类的未定义引用
C++ Nested class is producing undefined references to outer class
我已经阅读了有关同一问题的其他线程,但我仍然不知道为什么出现以下错误: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::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();
- 这也行不通。 您在类中声明了一个显式构造函数,需要客户端连接对象。 但在这里,您尝试在不传递任何客户端对象的情况下创建连接器。 连接器没有不带参数的构造函数。
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- c++11评估顺序(未定义的行为)
- 使用mysql c++连接器的未定义引用
- 从python调用openMP共享库时,未定义opnMP函数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 具有外部"c"和程序集的未定义函数
- 此增量后语句是否会导致未定义的行为?
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在C++中使用内联方法时出现未定义的符号错误
- 对外部模板 constexpr 构造函数的未定义引用