Я обновляю, как писать конструкторы на C ++, но версия документации C ++ генерирует глупые ошибки компилятора.
Я смотрел на другие примеры из-за переполнения стека и имитировал их, и все еще похожие ошибки
предположим, что #include уже здесь .h file
class Matrix{
private:
//eventually going to create 2d vector here
public:
// from: http://www.cplusplus.com/doc/tutorial/classes/
Matrix (string);
//another way shown from other examples
Matrix (string filename);
};
.cpp
Matrix::Matrix(string filename){
int num = 0;
string line;
ifstream matrix_file(filename);
if(matrix_file.is_open()){
while(getline(matrix_file, line)){
stringstream extract(line);
while(extract >> num){
cout << num << " ";
}
cout << '\n';
}
matrix_file.close();
}
}
main.cpp
int main(int argc, char *argv[]){
string filename = argv[1];
Matrix grid (filename);
return 0;
}
Я ожидаюСоздание объекта при вызове конструктора выводит значения в файле. Но при компиляции я получаю:
matrix.h:6:12: warning: unnecessary parentheses in declaration of ‘string’ [-Wparentheses]
Matrix (string);
^
matrix.h:6:19: error: field ‘string’ has incomplete type ‘Matrix’
Matrix (string);
^
matrix.h:2:7: note: definition of ‘class Matrix’ is not complete until the closing brace
class Matrix{
или
matrix.h:6:19: error: expected ‘)’ before ‘filename’
Matrix (string filename);
~ ^~~~~~~~~
)
main.cpp: In function ‘int main(int, char**)’:
main.cpp:11:24: error: no matching function for call to ‘Matrix::Matrix(std::__cxx11::string&)’
Matrix grid (filename);
в зависимости от того, каким образом я инициализирую строковый параметр в файле .h. Я думаю, у меня где-то есть небольшая опечатка, но я не нахожу ничего плохого в этом простом куске кода. Любая помощь приветствуется. Спасибо