Problem ze strukturą w klasie.

0

Witam,

C++, MVS2010

mam problem z klasą, a raczej strukturą w tej klasie.

Mam dwie struktury w klasie:


class Kolejka
{
public:
    Kolejka(void);
    ~Kolejka(void);

    struct element
    {
        int x;
    };

    struct kol
    {
        element data;
        kol *next;
    };

    kol insert(kol, element);
    kol remove(kol, element);
};

Teraz chciałbym stworzyć metodę "insert" typu "kol" w tej klasie, więc poza klasą piszę:


Kolejka::kol insert(struct kol *tail,struct element data)
{
    kol *wsk =  new kol; // <------ Tutaj

    wsk->data = data;
    wsk->next = NULL;

    if(tail!=NULL)
        tail->next = wsk;

    return wsk;
}

i wywala mi error:

Error 1 error C2512: 'kol' : no appropriate default constructor available
w kodzie wyżej zaznaczyłem do czego się odnosi komunikat.

Proszę o pomoc.

0

jaki jest sens tworzenia struktury w klasie?

0

chcę stworzyć kolejkę, i muszę jej wszystkie funkcje zaimplementowac w klasie.

0

To się kompiluje, znajdź 2 różnice: http://ideone.com/lhGOr. BTW rzadko w C++ używa się struct przed nazwą typu, głównie w celu kompatybilności z C (nie mówię tutaj o deklaracji struktury, ale np. w nagłówku funkcji).

0
Kolejka::kol Kolejka::insert(Kolejka::kol *tail,Kolejka::element data)
{
       Kolejka::kol *wsk = new Kolejka::kol;

W C była potrzeba pisać

Kolejka(void);

żeby było wiadomo, że to funkcja bezparametrowa, ale w C++ nie.

kol insert(kol, element);

W tej deklaracji masz obiekt kol, a nie wskaźnik do obiektu jak w definicji.

0

Tak to by się kompilowało...

#include <iostream>
using namespace std;
class Kolejka{
public:
    Kolejka();
    ~Kolejka();
    struct element{
        int x;
    };
    struct kol{
        element data;
        kol *next;
    };
    kol* insert(kol *tail, element data);
};
Kolejka::kol* Kolejka::insert(kol *tail,element data){
       kol* wsk = new kol();
        wsk->data = data;
        wsk->next = NULL;

        if(tail!=NULL)
                tail->next = wsk;
        return wsk;
}
int main(){
    return 0;
}
0

ale po co MJay? To nie jest C tylko C++.

0

Żadna nowość, ale po co w tym przypadku typedef? Do niczego..

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0