我有两个使用using子句的基类
class MultiCmdQueueCallback {
using NetworkPacket = Networking::NetworkPacket;
....
}
class PlcMsgFactoryImplCallback {
using NetworkPacket = Networking::NetworkPacket;
....
}
然后我宣布一个课程
class PlcNetwork :
public RouterCallback,
public PlcMsgFactoryImplCallback,
public MultiCmdQueueCallback {
private:
void sendNetworkPacket(const NetworkPacket &pdu);
}
然后,编译器会标记对“ NetworkPacket”的错误引用是模糊的“ sendNetworkPacket(NetworkPacket&...”
现在,两个“ using子句”都解析为相同的基础类Networking:NetworkPacket
实际上,如果我将方法声明替换为:
void sendNetworkPacket(const Networking::NetworkPacket &pdu);
它编译良好。
为什么编译器将每个using子句都视为一个不同的类型,即使它们都指向相同的基础类型。这是由标准强制执行的还是我们有编译器错误?
NetworkPacket
-在MultiCmdQueueCallback,在PlcMsgFactoryImplCallback和在网络中。应该指定使用哪一个。而且我认为推杆virtual
在这里不会有任何帮助。