Наследовать конструкторы от вектора
В Stroustrup, C++ Language Programming 4th Edition, он написал на странице 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: "инициализация": невозможно преобразовать из "списка инициализаторов" в "вектор" c: \ компьютерное программирование \ язык программирования C++ \code\ch3\consoleapplication3\consoleapplication3\consoleapplication3.cpp 28 1 ConsoleApplication3
Ошибка 1 ошибка C2886: "вектор>": символ нельзя использовать в элементе с помощью объявления-декларации c: \ компьютерное программирование \ язык программирования C++ \code\ch3\consoleapplication3\consoleapplication3\consoleapplication3.cpp 17 1 ConsoleApplication3
Ошибка 2 ошибка C2886: "вектор>": символ нельзя использовать в элементе с помощью объявления-декларации c: \ компьютерное программирование \ язык программирования C++ \code\ch3\consoleapplication3\consoleapplication3\consoleapplication3.cpp 17 1 ConsoleApplication3 4 IntelliSense: нет экземпляра Конструктор "Vector::Vector [with T=int]" соответствует списку аргументов. Типы аргументов: (int, int, int, int) c:\ Компьютерное программирование \ Язык программирования C++ \Code\Ch3\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 28 16 ConsoleApplication3
Мой вопрос касается в основном ошибки 2, ошибки C2886: которая относится к директиве using. Visual Basic определяет ошибку следующим образом:
'class:: identifier': символ не может использоваться в члене, используя-объявление. При использовании объявления используется символ, такой как имя пространства имен. Объявление using предназначено для объявления членов базового класса.
Страуструп, очевидно, использует его, но мне не удалось продублировать его метод. Есть ли заголовок, который мне не хватает или как? Может ли кто-нибудь объяснить мою ошибку? спасибо, черт возьми.