Questions tagged «using-declaration»

6
C ++ 11中的'typedef'和'using'有什么区别?
我知道在C ++ 11中,我们现在可以using用来编写类型别名,例如typedefs: typedef int MyInt; 据我了解,相当于: using MyInt = int; 并且这种新语法是通过努力表达“ template typedef” 的方式而出现的: template< class T > using MyType = AnotherType< T, MyAllocatorType >; 但是,对于前两个非模板示例,标准中是否还有其他细微差别?例如,typedefs以“弱”方式进行别名。也就是说,它不会创建新类型,而只会创建一个新名称(这些名称之间的转换是隐式的)。 与它相同using还是会生成新类型?有什么区别吗?

4
为什么两个using子句解析为同一类型在gcc中被认为是模棱两可的
我有两个使用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子句都视为一个不同的类型,即使它们都指向相同的基础类型。这是由标准强制执行的还是我们有编译器错误?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.