GCC报错:expected unqualified-id before ‘using’,模板结构体指针别名创建失败
解决模板结构体指针别名的编译错误
嘿,我看你在给模板结构体的指针创建类型别名时遇到了编译问题,用GCC 5.4.0编译时抛出了expected unqualified-id before ‘using’的错误对吧?
咱们先说说你原来写法的问题:
- 你写的
using pointer_Struct = *new_Struct;首先错在模板的使用上——new_Struct是一个模板类,必须指定具体的模板参数(比如new_Struct<T>)才能作为合法的类型来用; - 其次,C++里定义指针类型别名时,指针符号
*得跟在具体类型的后面,而不是放在类型前面,你不能直接用*类型这种写法来表示指针类型。
下面是能正常编译的正确代码:
template<typename T> class new_Struct { T data; }; template<typename T> using pointer_Struct = new_Struct<T>*; int main() { return 0; }
这里的关键是给类型别名pointer_Struct也加上了模板参数<T>,让它和new_Struct<T>形成对应关系,同时把指针符号放在了模板实例化类型的后面,完全符合C++的语法规则,GCC 5.4.0就能顺利编译通过啦。
内容的提问来源于stack exchange,提问作者Semyon Labzov
相关产品推荐
相关产品推荐

