想请问以下的typedef语句该怎么写?该如何操作?

#include<vector>
typedef int ID_;
template<const ID_ id>
class C
{
public:
void say(){};

}
typedef std::vector<C> CVec;//报错
typedef std::vector<C<ID_>> CVec;//报错
typedef std::vector<C<int>> CVec;//报错
int main()
{
CVec vec;

return 0;

}

// 

慕少森
浏览 129回答 1
1回答

人到中年有点甜

const ID_ id 中的 const 会被编译器忽略掉, 可以不写(这个不算错误).这是一个最基本的Error: 类定义 后面 要有 &nbsp;; &nbsp;结尾.&nbsp;ID_ 既然是 int 的 alias, 那 类C 就是一个 非类型实参的类模板. 也就是说, C<> 的 <> 中应该是个 int的数字, 不能是 int 或者 &nbsp;ID_, 或者 其它类型.对于 C++98 C++03 而言, vector<C<5> > 中最后面的 两个 大于号之间 &nbsp;必须要有至少一个空格. 这是语法规定. &nbsp;除非你的编译器支持 C++11, 而且你在编译的时候 指定了编译选项&nbsp;1-std=c++14或者1-std=c++11最后, 一个修改后的版本:#include<vector>typedef&nbsp;int&nbsp;ID_;template&nbsp;<ID_&nbsp;id>class&nbsp;C{&nbsp;&nbsp;&nbsp;&nbsp;public:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;say()&nbsp;{};};//typedef&nbsp;std::vector<C>&nbsp;CVec;//报错//typedef&nbsp;std::vector<C<ID_>>&nbsp;CVec;//报错//typedef&nbsp;std::vector<C<int>>&nbsp;CVec;//报错typedef&nbsp;std::vector<C<1>&nbsp;>&nbsp;CVec;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;注意:&nbsp;这三个是不同的类型typedef&nbsp;std::vector<C<2>&nbsp;>&nbsp;CVec;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;注意:&nbsp;这三个是不同的类型typedef&nbsp;std::vector<C<999>&nbsp;>&nbsp;CVec;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;注意:&nbsp;这三个是不同的类型int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;CVec&nbsp;vec;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}
打开App,查看更多内容
随时随地看视频慕课网APP