为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C
慕少森 2022-05-13 19:11:19
#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;}// 
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

  1. const ID_ id 中的 const 会被编译器忽略掉, 可以不写(这个不算错误).

  2. 这是一个最基本的Error: 类定义 后面 要有  ;  结尾. 

  3. ID_ 既然是 int 的 alias, 那 类C 就是一个 非类型实参的类模板. 也就是说, C<> 的 <> 中应该是个 int的数字, 不能是 int 或者  ID_, 或者 其它类型.

  4. 对于 C++98 C++03 而言, vector<C<5> > 中最后面的 两个 大于号之间  必须要有至少一个空格. 这是语法规定.  除非你的编译器支持 C++11, 而且你在编译的时候 指定了编译选项 

    1-std=c++14

    或者

    1-std=c++11

最后, 一个修改后的版本:


#include<vector>typedef int ID_;template <ID_ id>class C{    public:        void say() {};};//typedef std::vector<C> CVec;//报错//typedef std::vector<C<ID_>> CVec;//报错//typedef std::vector<C<int>> CVec;//报错typedef std::vector<C<1> > CVec;       // 注意: 这三个是不同的类型typedef std::vector<C<2> > CVec;       // 注意: 这三个是不同的类型typedef std::vector<C<999> > CVec;     // 注意: 这三个是不同的类型int main(){    CVec vec;    return 0;}



查看完整回答
反对 回复 2022-05-16
  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信