【发布时间】:2014-10-24 09:00:59
【问题描述】:
这是否可行,是否合法:
typedef const MyClass * const MY_CONST_TYPE
或者我必须将其分解为 2 个 typedef?
谢谢
【问题讨论】:
标签: c++ pointers constants typedef
这是否可行,是否合法:
typedef const MyClass * const MY_CONST_TYPE
或者我必须将其分解为 2 个 typedef?
谢谢
【问题讨论】:
标签: c++ pointers constants typedef
只要您在语句的末尾放置一个分号,就不会证明这个 typedef 是正确的。
这是一个例子
class MyClass {};
typedef const MyClass * const MY_CONST_TYPE;
int main()
{
MyClass a;
MY_CONST_TYPE pa = &a;
return 0;
}
或者使用详细的类型名称,您甚至可以更改声明的顺序
typedef const class MyClass * const MY_CONST_TYPE;
class MyClass {};
int main()
{
MyClass a;
MY_CONST_TYPE pa = &a;
return 0;
}
【讨论】:
正如其他人所指出的,这是完全有效的。在 C++11 中考虑的一种选择是使用新的 using 语法,您可能会发现它更易于阅读。
using MY_CONST_TYPE = const MyClass* const;
【讨论】:
const MyClass * const 本身就是一个有效类型。因此,您的typedef 也可以,只要在末尾添加分号即可!
【讨论】: