überladene funktionen in einer cpp datei?
-
Hi,
ich hab nen code und ich möchte die funktionen die in der klasse bar sind in eine cpp tun, doch ich weis net wie!!
hier der code:
// *.h class Base1 { public: virtual void foo() = 0; }; class Base2 { public: virtual void foo() = 0; }; class bar : public Base1, public Base2 { public: void Base1::foo() { cout << "Foo"; } void Base2::foo() { cout << "bar"; } }; // *.cpp // wie mach ich hier die foo funktionen? // main.cpp #include "foobar.h" int main(void) { bar xxx; Base1 &b1 = xxx; b1.foo(); Base2 &b2 = xxx; b2.foo(); return 0; }
ciao
-
void bar::foo() { //... }
-
die dinger sind aber rein virtueller natur und werden erst in bar implementiert! ich bekomm da nen fehler:
error LNK2001: unresolved external symbol "public: virtual void __thiscall bar[::Base1]::foo(void)" (?foo@?Base1@bar@@UAE_NH@Z)
error LNK2001: unresolved external symbol "public: virtual void __thiscall bar[::Base2]::foo(void)" (?foo@?Base2@bar@@UAE_NH@Z)
-
foobar schrieb:
die dinger sind aber rein virtueller natur und werden erst in bar implementiert!
und wo ist das Problem? Hast du die Deklaration von foo innerhalb der bar Klasse geändert?
-
ich hab dir doch das Problem in form von einem Linkerfehler gegeben....
-
Hallo? Hast auch die Deklaration von foo innerhalb der bar Klasse geändert?
class bar : public /*...*/ { void foo(); /*<<<<*/ };
-
ja es wurde zu:
void Base1::foo();
void Base2::foo();in der klasse
-
der letzte Versuch und ich geb auf:
//Header class A { virtual void foo() = 0; }; class B { virtual void foo() = 0; }; class C : A, B { public: void foo(); }; //*.cpp void C::foo() { }
was du aber damit erreichen willst, ist mir rätselhaft...
-
und wofür soll die funktion nun sein? A oder B?
-
foo wird für beide Klassen implementiert.