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

[C++] undefined reference, proste operacje na obiektach

Ostatnio zmodyfikowano 2014-03-25 19:35
Autor Wiadomość
fmmat
Temat założony przez niniejszego użytkownika
[C++] undefined reference, proste operacje na obiektach
» 2014-03-24 19:44:57
Witam, mam problem
undefined reference to `WTP::wspolczynnik(int)'
kod nie jest jakis bardzo skomplikowany, dla pierwszego argumentu tworzy wiersz trojkata pascala, a nastepnie dla nastepnych argumentow wypisuje dane elementy utworzonego wiersza. W Javie mam napisane i działa, lecz problem pojawia się w C++ z operacją na kilku plikach .cpp

C/C++
//plik Test.cpp

#include <stdlib.h>
#include "wierszyk.h"
#include <string>
#include <cstring>
#include <iostream>

using namespace std;

int main( int argc, char * argv[] ) {
    int b = 0, n = 0, x = 0;
    n = atoi( argv[ 1 ] );
   
    if( n >= 0 ) {
       
        for( int i = 2; i < argc; i++ ) {
           
            b = atoi( argv[ i ] );
           
            WTP * wiersz = new WTP( n );
           
            x = wiersz->wspolczynnik( b );
            if(( b < 0 ) ||( x > n ) )
                 cout << b << " - liczba spoza zakresu" << endl;
            else
                 cout << b << " - " << x << endl;
           
        }
    }
    else {
        cout << "Blad parametru. " << endl;
        return 0;
    }
}

//plik WTP.cpp

#include <stdlib.h>
#include <string>
#include <cstring>
#include <iostream>
#include "wierszyk.h"

using namespace std;


WTP( int n ) {
    tab = new int[ n + 1 ];
    tab[ 0 ] = 1;
    for( int i = 0; i < n - 1; i++ ) {
        for( int j = i + 1; j > 0; j-- ) {
            tab[ j ] = tab[ j ] + tab[ j - 1 ];
        }
    }
}

int wspolczynnik( int m ) {
    return tab[ m ];
};

//plik wierszyk.h

#ifndef wierszyk
#define wierszyk
#include <cstdlib>
#include <string>
#include <cstring>
#include <iostream>
using namespace std;

class WTP {
public:
    int * tab;
   
    WTP( int n );
   
    int wspolczynnik( int m );
   
};

#endif

Błąd występuje w linijce " x = wiersz->wspolczynnik(b); ". Mógłby mi ktoś powiedzieć co mam źle i jak to poprawić żeby dla każdego argumentu uruchamial się ten konstruktor WTP i zeby wypisywało tą f. współczynnik?
P-107142
pekfos
» 2014-03-24 19:48:00
Nie masz implementacji żadnej metody z klasy WTP.
P-107143
fmmat
Temat założony przez niniejszego użytkownika
» 2014-03-24 19:55:17
Jak ją zrobić?
P-107144
pekfos
» 2014-03-24 19:57:37
Prawie tak jak w WTP.cpp, tylko z innymi nazwami.
P-107147
fmmat
Temat założony przez niniejszego użytkownika
» 2014-03-24 20:01:30
dalej nie wiem, wg mnie to jest implementacja:

int wspolczynnik( int m) {
return tab[m];
};
P-107148
Monika90
» 2014-03-24 20:02:36
To jest implementacja funkcji globalnej, a nie składowej klasy.
http://cpp0x.pl/kursy​/Programowanie-obiektowe-C++​/Podstawy/Metody/488
P-107149
fmmat
Temat założony przez niniejszego użytkownika
» 2014-03-24 20:17:06
Mam dopisać

C/C++
int WTP::wspolczynnik( int m )
{
    return tab[ m ];
}

?
P-107151
pekfos
» 2014-03-24 20:26:23
Nie zaszkodzi sprawdzić.
P-107153
« 1 » 2
  Strona 1 z 2 Następna strona