Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z wywołaniem funkcji

Ostatnio zmodyfikowano 2017-03-19 15:50
Autor Wiadomość
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
C/C++
#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
C/C++
#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_H_INCLUDED

DecisionTree.cpp
C/C++
#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 );
        }
       
       
    }
   
}
P-159101
pekfos
» 2017-03-18 15:55:56
Co program wypisuje? Co widać w debuggerze?
P-159104
Monika90
» 2017-03-18 16:02:31
C/C++
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
P-159106
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.
P-159113
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.
P-159116
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.
P-159121
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.
P-159157
« 1 »
  Strona 1 z 1