【发布时间】:2018-07-14 03:35:10
【问题描述】:
我有一个类,它的成员中包含另一个类的对象。
头文件如下所示:
class LinxArduinoEthernetListener : public LinxListener
{
EthernetServer ArduinoTcpServer(uint16_t);
EthernetServer 本身就是一个类(在 Arduino EthernetServer.h 库中定义)。
因为我在编译时不知道端口,但服务器对象应该是侦听器类的成员,所以我允许在类构造函数中初始化服务器对象,然后尝试重新分配该对象,使用以下代码(在相应的 .cpp 文件中):
ArduinoTcpServer = EthernetServer(port);
其中“端口”是一个 uint16_t。据我所知,这是将新构造的实例重新分配给对象变量的正确方法。
然而,编译器给了我以下错误:
LinxArduinoEthernetListener.cpp:122:错误:无效使用成员 函数(你忘了 '()' 吗?)
ArduinoTcpServer = EthernetServer((uint16_t)port);
我认为这可能与我在随后的函数调用中得到的错误有关:
LinxArduinoEthernetListener.cpp:123:错误: '((LinxArduinoEthernetListener*)this)->LinxArduinoEthernetListener::ArduinoTcpServer' 没有类类型
ArduinoTcpServer.begin();
但我会说它确实有一个类类型,即 EthernetServer 类,如头文件中指定的那样。
我在这里做错了什么?
【问题讨论】:
-
错字:改成
EthernetServer ArduinoTcpServer(some_value); -
当声明一个对象时,你必须输入值,而不是类型。
-
如果你要在构造函数中初始化它,那么创建一个指针:
EthernetServer *ArduinoTcpServer;并在构造函数中:ArduinoTcpServer = new EthernetServer(some_port) -
我希望我可以就您的 -1 请求仲裁。这是一个格式正确的问题,我假设您认为我没有尝试过。将其声明为“EthernetServer ArduinoTcpServer(22);”给出另一个编译器错误:数字常量 EthernetServer ArduinoTcpServer(22) 之前的预期标识符;错误:数字常量前应有“,”或“...”
-
在 AVR gcc 中默认没有实现“new”。因此我宁愿避免它。