在Stroustrup,C ++编程语言第4版中,他在第79页写了以下代码:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <allocators>
using std::vector;
using namespace std;
template<class T>
class Vector : vector<T>
{
private:
T elem[50];
int size;
public:
***using vector<T>::vector; // inherit constructors***
T& operator[](size_type i) { check(i); return this−>elem(i); }
const T& operator=(size_type i) const {
check(i);
return this−>elem(i);
}
void check(size_type i) { if (this−>size()<i) throw Bad_index(i); }
};
int _tmain(int argc, _TCHAR* argv[])
{
Vector <int> V{ 1, 2, 3, 4 };
return 0;
}
编译程序时,收到以下错误:
错误3错误C2440:'初始化':无法转换 'initializer-list'到'Vector'c:\ computer programming \ c ++ 程序设计 language \ code \ ch3 \ consoleapplication3 \ consoleapplication3 \ consoleapplication3.cpp 28 1 ConsoleApplication3
错误1错误C2886:'vector&gt;' :符号不能 在成员使用声明c:\ computer programming \ c ++中使用 程序设计 language \ code \ ch3 \ consoleapplication3 \ consoleapplication3 \ consoleapplication3.cpp 17 1 ConsoleApplication3
错误2错误C2886:'vector&gt;' :符号不能 在成员使用声明c:\ computer programming \ c ++中使用 程序设计 language \ code \ ch3 \ consoleapplication3 \ consoleapplication3 \ consoleapplication3.cpp 17 1 ConsoleApplication3 4智能感知:没有构造函数的实例“Vector :: Vector [with T = int]“匹配参数列表 参数类型是:(int,int,int,int)c:\ Computer Programming \ C ++ Programming Language \ Code \ Ch3 \ ConsoleApplication3 \ ConsoleApplication3 \ ConsoleApplication3.cpp 28 16 ConsoleApplication3
我的问题主要涉及错误2错误C2886:它指的是using指令。 Visual Basic将错误定义如下:
'class :: identifier':符号不能在成员using-declaration中使用 using声明使用符号,例如命名空间名称。 using声明用于声明基类成员。
Stroustrup显然使用它,但我没有复制他的方法。是否有我缺少的标题或什么?有人可以解释我的错误吗?谢谢jmg。