这是否有效,是否合法:
typedef const MyClass * const MY_CONST_TYPE
或者我必须将其分解为2个typedef?
感谢
答案 0 :(得分:4)
如果你在语句的末尾放置一个分号,那么这个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;
}
答案 1 :(得分:1)
正如其他人所指出的,这是完全有效的。在C ++ 11中要考虑的一个选择是使用新的using
语法,您可能会发现它更容易阅读。
using MY_CONST_TYPE = const MyClass* const;
答案 2 :(得分:0)
const MyClass * const
本身就是一种有效的类型。因此,只要您在末尾添加分号,您的typedef
也可以。