У меня проблемы с компиляцией следующего заголовка. Это мой первый опыт работы с шаблонами, и я предполагаю, что что-то не так. Компиляторы указывают на ошибки vector<vector<T>> data_;
и функцию перегрузки оператора. Мне бы хотелось, чтобы вектор data_
имел тот же тип, что и объект OptBaseMatrix
, но я не уверен, как это сделать ... Я действительно не знаю, как решить эту проблему. Помогите!
#ifndef OPTBASEMATRIX_H
#define OPTBASEMATRIX_H
#include <vector>
template<typename T>
class OptBaseMatrix
{
public:
vector<vector<T>> data_;
OptBaseMatrix(int rows, int cols);
~OptBaseMatrix();
void readMatrix();
void printMatrix();
int getRows();
int getCols();
OptBaseMatrix<T> operator+(const OptBaseMatrix<T>& matrix1, const OptBaseMatrix<T>& matrix2);
private:
int rows_;
int cols_;
};
#endif // OPTBASEMATRIX_H
ОБНОВЛЕНИЕ : Вот фрагмент из журнала отладчика:
Error 1 error C2143: syntax error : missing ';' before '<' optbasematrix.h 17 TD2
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int optbasematrix.h 17 TD2
Я пытался изменить вектор> data_; по вектору> data_; и все еще получаю ту же ошибку: / Я где-то читал, что мой заголовок класса шаблона (.h) и реализация (.cpp) должны находиться в одном файле ... это возможно связано?
ОБНОВЛЕНИЕ 2 : Ух ты! Я забыл "использование пространства имен std;" Кажется, проблема исправлена!