Strona 1 z 1

[c++]problem z linkerem

: 17 lis 2009, o 22:43
autor: cfk

Kod: Zaznacz cały

#include <iostream>
using namespace std;

struct Tab {
    int n; // liczba elementów
    int *t; // elementy tablicy
};

Tab* NewTab(int n); // tworzenie tablicy o rozmiarze n,
                    // wypełnionej zerami
void drukuj(Tab *po); // drukowanie tablicy

int main(){
drukuj(NewTab(5));
}

Tab* Newtab(int n){
    int* t = new int[n];
    Tab* p = new Tab;
    p->n=n;
    p->t=t;
   for (*t; *t<*(t+n); *t++){
        *t=0;
        };
   
    return p;
} 

void drukuj (Tab *po){
    int n=po->n;
    int *x=po->t;
    for (*x; *x<*(x+n);*x++){
        cout<<*x<<" ";
        };
    cin.get();
}
Pisałem prosty programik który bawi się strukturą i na początku już utknołem - kompilator wywala nast. błąd
" [Linker error] undefined reference to `NewTab(int)' "
wg. mnie jest ok a programu nie moge odpalic

[c++]problem z linkerem

: 17 lis 2009, o 23:56
autor: soku11
Literówka:

Kod: Zaznacz cały

Tab* Newtab(int n){
a powinno być

Kod: Zaznacz cały

Tab* NewTab(int n){
Tak poza tym:
1. Wyciek pamięci w funkcji main (tworzysz nową tablicę i nową strukturę, a ich nie kasujesz).
2. W funkcjach NewTab i drukuj (swoją drogą dziwna konwencja nazywania) używasz jakichś kontrukcji, których chyba sam nie rozumiesz. Chodzi konkretnie o fragmenty z pętlą for. Wiesz w ogóle, co teraz robi twoja pętla? I czy w ogóle się zatrzyma? Czemu nie zrobisz jak człowiek, czyli:

Kod: Zaznacz cały

int* n=...;

for(int i=0;i<n;++i)
  n[i]=0;
?
3. Czemu i++, a nie ++i?
4. Main zwraca losowe wartości (brak returna).
5. Czemu nie stosujesz klas? Wszystko by się łatwiej tutaj załatwiło

Pozdrawiam.


Pozdrawiam.