У меня есть несколько вопросов с определением класса, наследующего вектор STL. Предполагается, что этот класс публично наследуется от std :: vector, но я продолжаю получать следующую ошибку от компилятора. Я почти наверняка, что это связано с ошибкой в том числе <vector>
, но я не знаю, как это исправить.
In file included from useMVector.cpp
[Error] invalid use of incomplete type 'class MVector<T, size>'
In file included from MVector.cpp
from useMVector.cpp
[Error] declaration of 'class MVector<T, size>'
recipe for target 'useMVector.o' failed
Соответствующий код указан здесь:
useMVector. cpp:
#include <stdlib.h>
#include "MVector.cpp"
using namespace std;
int main() {
return 0;
}
MVector.h:
#ifndef _MVECTOR_
#define _MVECTOR_
#include <iostream>
#include <stdlib.h>
#include <vector>
using namespace std;
template<class T, int size>
class MVector : public std::vector<T> {
public:
// constructer:
MVector();
// operator=, copy constructor and destructor from std::vector
// iterator from std::vector
// methodes:
// addition with vector
template<class T2>
MVector<T, size> operator+(const MVector<T2,size>& y);
...
};
#endif // _MVECTOR_
MVector. cpp
#include "MVector.h"
template<class T, int size>
MVector<T, size>::MVector() : std::vector<T>::vector(size, 0) {};
template<class T2, class T, int size>
MVector<T,size> MVector<T,size>::operator+(const MVector<T2,size>& y) {
}