gpt4 book ai didi

c++ - 对象赋值-无效使用成员函数错误

转载 作者:行者123 更新时间:2023-11-30 03:22:12 25 4
gpt4 key购买 nike

我有一个类,它的成员中包含另一个类的对象。

头文件是这样的:

class LinxArduinoEthernetListener : public LinxListener
{
EthernetServer ArduinoTcpServer(uint16_t);

其中 EthernetServer 本身是一个类(在 Arduino EthernetServer.h 库中定义)。

因为我在编译时不知道端口,但服务器对象应该是监听器类的成员,所以我允许在类构造函数中初始化服务器对象,然后稍后尝试重新分配该对象,使用以下代码(在相应的 .cpp 文件中):

ArduinoTcpServer = EthernetServer(port);

其中“端口”是一个 uint16_t。据我所知,这是将新构造的实例重新分配给对象变量的正确方法。

然而,编译器给我以下错误:

LinxArduinoEthernetListener.cpp:122: error: invalid use of member function (did you forget the '()' ?)

ArduinoTcpServer = EthernetServer((uint16_t)port);

我认为这可能与我在紧接着的函数调用中得到的错误有关:

LinxArduinoEthernetListener.cpp:123: error: '((LinxArduinoEthernetListener*)this)->LinxArduinoEthernetListener::ArduinoTcpServer' does not have class type

ArduinoTcpServer.begin();

但我要说的是,它确实有一个类类型,即 EthernetServer 类,如头文件中指定的那样。

我在这里做错了什么?

最佳答案

EthernetServer ArduinoTcpServer(uint16_t);声明了一个名为ArduinoTcpServer的成员函数。要声明成员变量,请省略参数类型和括号。还要添加一个构造函数来初始化成员变量,例如:

class LinxArduinoEthernetListener : public LinxListener
{
public:
EthernetServer ArduinoTcpServer;

LinxArduinoEthernetListener(uint16_t port)
: ArduinoTcpServer(port)
{
}
};

关于c++ - 对象赋值-无效使用成员函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51331486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com