Problem z wywołaniem funkcji
Ostatnio zmodyfikowano 2017-03-19 15:50
ast44 Temat założony przez niniejszego użytkownika |
Problem z wywołaniem funkcji » 2017-03-18 15:50:26 Witam Mam problem z wywołaniem funkcji "parseInputData". Powstawiałem sobie jakieś znaczniki żeby mi wypisywało dokąd dochodzi i wygląda na to że w ogóle po skoczeniu do argumentów wywołania funkcji dalej nie wchodzi i efekcie rozmiar "data" jest zerowy. Main.cpp #include "DecisionTree.h"
int main() { cout << "Tutaj 1" << endl; Data data; string const name = "Test.txt"; parseInputData( name, data ); cout << "Tutaj 2" << endl; cout << data.size() << endl; for( int i = 0; i < data.size(); i++ ) { cout << "Tutaj 3" << endl; cout << data[ i ][ 0 ] << " " << data[ i ][ 1 ] << " " << data[ i ][ 2 ] << endl; } return 0; }
DecisionTree.h #ifndef DECISIONTREE_H_INCLUDED #define DECISIONTREE_H_INCLUDED
#include <iostream> #include <string> #include <vector> #include <fstream> #include <cstdlib>
using namespace std;
typedef vector < string > id_attributes_and_classification; typedef vector < id_attributes_and_classification > Data;
void parseInputData( string const &, Data & ) { };
#endif
DecisionTree.cpp #include "DecisionTree.h"
void parseInputData( string const & name_of_file, Data & data ) { cout << "Przed weszlo" << endl; ifstream file; file.open( name_of_file ); if( file.fail() ) { cout << "Blad przy otwarciu pliku" << " " << name_of_file << endl; } else { cout << "Weszlo" << endl; static int miss_first_line = 1; string line; vector < string > line_even; vector < string > line_odd; vector < string > id; vector < string > example; while( getline( file, line ) ) { if( miss_first_line != 1 ) { if( miss_first_line % 2 ) { line_even.push_back( line ); } else { line_odd.push_back( line ); } id.push_back( to_string( i - 1 ) ); } miss_first_line++; } file.close(); for( int i = 0; i <( miss_first_line - 1 ) / 2; i++ ) { example.push_back( line_odd[ i ] ); example.push_back( line_even[ i ] ); example.push_back( id[ i ] ); data.push_back( example ); } } }
|
|
pekfos |
» 2017-03-18 15:55:56 Co program wypisuje? Co widać w debuggerze? |
|
Monika90 |
» 2017-03-18 16:02:31 void parseInputData( string const &, Data & ) { };
Ta funkcja nic nie robi, za to ma ekstra średnik... Po prostu nie skompilowałeś i nie zlinkowałeś pliku DecisionTree.cpp |
|
ast44 Temat założony przez niniejszego użytkownika |
» 2017-03-18 16:59:05 Co wypisuje ? Tutaj 1 Tutaj 2 0 (w odniesieniu do rozmiaru wektora)
Monika90 Jeśli chodzi o plik nagłówkowy to tam problemem są te klamry (o ile dobrze Cię zrozumiałem) chyba. Ale bez nich wyrzuca mi błąd że jest niezdefiniowana referencja do funkcji parseInputData.
|
|
Monika90 |
» 2017-03-18 17:34:32 Musisz dołączyć plik DecisionTree.cpp do projektu, inaczej kompilator nie będzie wiedział o jego istnieniu i go nie skompiluje. |
|
ast44 Temat założony przez niniejszego użytkownika |
» 2017-03-18 19:05:05 Ale właśnie o to chodzi że mam ten plik w projekcie. Używam IDE i wszystkie pliki są w jednym folderze, będącym projektem. |
|
Monika90 |
» 2017-03-19 15:50:07 Wszystko wskazuje na to że plik DecisionTree.cpp nie jest kompilowany. Miałeś dwie definicje tej samej funkcji, a nie było komunikatu o błędzie, to znaczy że ten plik nie był kompilowany. Usunąłeś definicję z pliku h i dostałeś komunikat o braku definicji, co potwierdza że plik DecisionTree.cpp nie został skompilowany. |
|
« 1 » |