C++ C++;重写void函数返回类型会导致生成失败

C++ C++;重写void函数返回类型会导致生成失败,c++,cmake,overriding,virtual,C++,Cmake,Overriding,Virtual,我正在尝试将现有代码的构建系统转换为CMake。在此之前,使用waf可以很好地编译此代码。将构建系统转换为CMake后,它将失败。有什么想法吗 /home/dominick/Desktop/forked/NS3/build/ns3/bridge-channel.h:54:23: error: overriding ‘virtual std::size_t ns3::BridgeChannel::GetNDevices() const’ virtual std::size_t GetND

我正在尝试将现有代码的构建系统转换为CMake。在此之前,使用waf可以很好地编译此代码。将构建系统转换为CMake后,它将失败。有什么想法吗

/home/dominick/Desktop/forked/NS3/build/ns3/bridge-channel.h:54:23: error:   overriding ‘virtual std::size_t ns3::BridgeChannel::GetNDevices() const’
   virtual std::size_t GetNDevices (void) const;
                   ^~~~~~~~~~~
In file included from /home/dominick/Desktop/forked/NS3/src/csma/bindings   /ns3module.cc:1:0:
/home/dominick/Desktop/forked/NS3/src/csma/bindings/ns3module.h:2752:22: error: conflicting return type specified for ‘virtual uint32_t PyNs3CsmaChannel__PythonHelper::GetNDevices() const’

这本来应该失败的。也许你以前是用32位编译的,现在是用64位编译的

uint32\u t
不是64位的
size\u t
,因此不能重写它,因为类型冲突。只有在基类和继承类中返回
Base&
时,才能返回派生自
Base
的对象。它从未对不相关的类型起作用


在继承的类中将
override
添加到被重写的函数中。

新版本不太宽松,因此它捕获了一直存在的错误。您知道如何修复此错误,对吗?
std::size\u t
不一定需要是
uint32\u t