Ik heb een vreemd probleem, waar ik niets van snap.
Ik heb een bestand.h met daarin 2 classes, stel A en B. Nu wil ik een derde class maken die erft van A en een vierde die erft van B.
dus mijn code is:
Tot aan hier werkt het. Dan komt de eerste nieuwe class:
Ik maakte eerst een nieuw object aan met
Maar zodra ik nu al zeg C c; dan geeft ie de error dat C een undefined symbol is en alle functies die beginnen met c. herkent ie niet (wat dan ook logisch is).
Ook kan ik geen functies definiëren op de manier zoals ik dat hierboven deed, de constructor en destructor moeten in de class zelf staan en kunnen niet zo worden gebruikt bijv:
C::C
{
}
C::~C
{
}
Want ook dat geeft een foutmelding: Qualifier C is not a class or namespace name
In Borland staat C keurig onder de classes maar toch wordt deze niet herkend. De plek waar ik de class verder definieer (de constructor/destructor en functies) maakt niets uit, onder of boven, het wordt niet herkend. Dit lijkt mij te komen omdat er : public A staat, maar ik snap echt totaal niet waarom dit niet werkt. In al mijn voorbeelden staat het zo en zou het moeten werken...
class A moet sowieso bovenaan, omdat B een verwijzing heeft naar A (zit een element in dat aangeeft in welke A object B zit).
Ik heb eerder gehad dat het niet werkte en maakte toen gewoon het project opnieuw. Probleem is dat ik dit al drie keer heb gedaan en nog steeds blijf ik deze foutmelding krijgen.
Ik heb A en B reeds eerder gemaakt en in een bestand.h gezet en deze samen met de rest van de code gekopieerd en hiernoemd. Hierna werkt het nog steeds, maar zodra ik ervende classes ga toevoegen, gaat het fout.
edit:
Het gaat dus ook fout bij niet ervende classes. Volgens mij zit ik óf weer op de onverklaarbare fout die ik eerder ook had (alleen kan hem niet oplossen) óf er zit echt iets fout in mijn code.
Ik heb een bestand.h met daarin 2 classes, stel A en B. Nu wil ik een derde class maken die erft van A en een vierde die erft van B.
dus mijn code is:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| class A; class C; class D; class B { public: bla bla private: bla bla } class A { public: bla bla private: bla bla } |
Tot aan hier werkt het. Dan komt de eerste nieuwe class:
C++:
1
2
3
4
5
6
7
| class C : public A { public: bla bla private: bla bla } |
Ik maakte eerst een nieuw object aan met
C++:
1
2
3
| A a; a.insert(bla) a.remove(bla) |
Maar zodra ik nu al zeg C c; dan geeft ie de error dat C een undefined symbol is en alle functies die beginnen met c. herkent ie niet (wat dan ook logisch is).
Ook kan ik geen functies definiëren op de manier zoals ik dat hierboven deed, de constructor en destructor moeten in de class zelf staan en kunnen niet zo worden gebruikt bijv:
C::C
{
}
C::~C
{
}
Want ook dat geeft een foutmelding: Qualifier C is not a class or namespace name
In Borland staat C keurig onder de classes maar toch wordt deze niet herkend. De plek waar ik de class verder definieer (de constructor/destructor en functies) maakt niets uit, onder of boven, het wordt niet herkend. Dit lijkt mij te komen omdat er : public A staat, maar ik snap echt totaal niet waarom dit niet werkt. In al mijn voorbeelden staat het zo en zou het moeten werken...
class A moet sowieso bovenaan, omdat B een verwijzing heeft naar A (zit een element in dat aangeeft in welke A object B zit).
Ik heb eerder gehad dat het niet werkte en maakte toen gewoon het project opnieuw. Probleem is dat ik dit al drie keer heb gedaan en nog steeds blijf ik deze foutmelding krijgen.
Ik heb A en B reeds eerder gemaakt en in een bestand.h gezet en deze samen met de rest van de code gekopieerd en hiernoemd. Hierna werkt het nog steeds, maar zodra ik ervende classes ga toevoegen, gaat het fout.
edit:
Het gaat dus ook fout bij niet ervende classes. Volgens mij zit ik óf weer op de onverklaarbare fout die ik eerder ook had (alleen kan hem niet oplossen) óf er zit echt iets fout in mijn code.
[ Voor 29% gewijzigd door The__Virus op 06-11-2007 13:50 ]