【发布时间】:2010-10-18 01:36:44
【问题描述】:
以下代码摘录导致了一个神秘的 MSVC++ 编译器错误:
template<class T> class Vec : public vector<T>{
public:
Vec() : vector<T>(){}
Vec(int s) : vector<T>(s){}
T& operator[](int i){return at(i); }
const T& operator[](int i)const{ return at(i);}
};
...
错误:
test.cpp(5) : error C2143: syntax error : missing ',' before '<'
test.cpp(12) : see reference to class template instantiation 'Vec<T>' being compiled
我该如何解决这个问题?
---编辑---
一些上下文:
我正在尝试编译从C++ 编程语言复制和粘贴的代码。我什至还没有完全理解这段代码。然而,其目的是实现一个向量类型,当某些代码尝试访问向量范围之外的项目时会抛出异常,而不是仅仅返回不正确的值。
【问题讨论】:
-
请显示 Vec 的实例化
-
你的课毫无意义。默认情况下,MSVC 中的 operator[] 也执行边界检查,就像 at() 一样。所以你实际上并没有在类中添加任何新东西,只是引入了潜在的错误(参见 JaredPar 的回答)。
标签: c++ visual-c++ compiler-errors