По этому коду я уже задавал вопрос. Возникли новые ошибки. Я просто не понимаю, что и как мне нужно исправить...
Пытаюсь создать класс, в котором будут описаны методы для работы с текстовыми файлами: чтение, редактирование, запись и так далее.
Так как методы этого класса хочу использовать в последующих проектах, то делаю это с использованием заголовочных файлов.
Листинг хиддера MyClasses.h
#ifndef MYCLASSES_H_INCLUDED
#define MYCLASSES_H_INCLUDED
#include <fstream>
using namespace:: std;
class MyClass{
private:
int string_size=0;
char input_symbol=0;
public:
int check_line_float(ifstream*);
};
#endif // MYCLASSES_H_INCLUDED
Листинг источника к хиддеру MyClasses.cpp
#include <fstream>
#include <iostream>
#include "MyClasses.h"
using namespace::std;
int check_line_float(ifstream *input_file){
int string_size = 0;
int error_cnt = 0;
char input_symbol=0;
if(!input_file->is_open()){
cout << "Cant open file" << endl;
}else{
while(*input_file>>noskipws>>input_symbol){
if (input_symbol != '0' &&
input_symbol != '1' &&
input_symbol != '2' &&
input_symbol != '3' &&
input_symbol != '4' &&
input_symbol != '5' &&
input_symbol != '6' &&
input_symbol != '7' &&
input_symbol != '8' &&
input_symbol != '9' &&
input_symbol != '.' &&
input_symbol != 32 &&
input_symbol != 2 &&
input_symbol != '-'){
error_cnt++;
cout << "Incorrect input numeric format. Some unknown symbol is detected" << endl;
cout << input_symbol << endl;
return -1;
}
string_size++;
}
cout << "Everething is ok" << endl;
return 0;
}
};
Листинг основной программы The_Matrix.cpp
#include <fstream>
#include <iostream>
#include "MyClasses.h"
using namespace::std;
int main(){
MyClass MyObject;
ifstream input_file("The_Matrix.txt");
cout<<MyObject.check_line_float(&input_file);
return 0;
}
Информация с окна ошибок
=== Build: Debug in The_Matrix (compiler: GNU GCC Compiler) ===|
...\MyClasses.h|11|warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11|
...\MyClasses.h|13|warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11|
...\MyClasses.cpp||In function 'int check_line_float(std::ifstream*)':|
...\MyClasses.cpp|59|warning: control reaches end of non-void function [-Wreturn-type]|
obj\Debug\The_Matrix.o||In function `main':|
...\The_Matrix.cpp|15|undefined reference to `MyClass::check_line_float(std::basic_ifstream<char, std::char_traits<char|
error: ld returned 1 exit status|
=== Build failed: 2 error(s), 3 warning(s) (0 minute(s), 15 second(s)) ===|
Предупреждения:
1 и 2 - инициализируются нестатичные поля класса в описании класса;
3 - в методе int check_line_float(ifstream *input_file)
в первом блоке ветвления (if(!input_file->is_open())
) нет return
или throw
, - не стоит так делать (методу с возвращаемым типом следует что-то вернуть или бросить исключение).
Ошибка: Ошибка линковки, линковщик не смог найти метод-член класса MyClass::check_line_float(ifstream *input_file)
.
Вы вызываете метод, который объявлен, но не определен. В файле MyClasses.cpp реализован какой-то метод check_line_float
, который не является членом какого-либо класса. Чтобы реализовать объявленный метод класса, нужно сделать это через оператор разрешения области видимости "::
", вот так:
//...
int MyClass::check_line_float(ifstream *input_file)
{
// do smth
}
//...
MyClass::
означает, что вы имеете ввиду именно этот метод-член класса.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пишу свойdll файл, при импорте функций из библиотеки функция LoadLibrary выкидывает исключение о нарушении прав доступа при чтении
Программа зависит от двух dll-ок, и чтобы не пихать все вместе, я хочу положить их в папку dlls, напримерЧто нужно сделать, чтобы программа работала...
Даны натуральное число n и целочисленная матрица [aij]i,j=1,
Нужна помощь с написанием программы на С++, а именно алгоритма Габова нахождения кратчайших путей с помощью масштабированияВся сложность...