Omówienie klas itp. Mojego interfejsu!C++: błąd LNK: nierozwiązany symbol zewnętrzny, wynikający z funkcji wirtualnych
Animal.H:
class Animal
{
public:
virtual void walk();
}
Animals.CPP
= Puste
Cow.H:
class Cow : public Animal
{
public:
virtual void walk();
}
W tym miejscu powinno być oczywiste, że funkcja jest pobierana z klasy, skąd pochodzi od prawej? (e.a. Animal ..) kiedy nie zdefiniowałbym funkcji chodzić, powinien powiedzieć, że powinienem zdefiniować to dobrze ...?
Cow.CPP:
void Cow::walk()
{
//do something specific for cow
}
SomeOtherClass.H
namespace SomeNamespace
{
void LetAnimalWalk();
}
SomeOtherClass.CPP
Cow myCow;
namespace SomeNamespace
{
void LetAnimalWalk()
{
myCow.walk();
}
}
Thi Czy powinno działać poprawnie? ... to znaczy przestrzeń nazw, rzeczy "Klasy :: ..."? i sposób, w jaki dziedziczę i używam interfejsu?
ponieważ w ten sposób mogę uzyskać z każdej funkcji zrobiłem z interfejsu, więc każda funkcja wirtualnego daje mi następujący błąd:
SomeOtherClass.obj : error LNK2019: unresolved external symbol "public: virtual void __thiscall Cow::Walk (...etc etc...) referenced in function "void __cdecl SomeNamespace::LetAnimalWalk() (...etc etc...)
Czy ktoś wie, co robię źle, co robię znaleźć głównie jest to, że oznacza to, że nie zostały uznane za prawo funkcyjny (gdzieś w Cow.cpp ??)
z góry dzięki chłopaki
Czy 'myCow.Walk();' literówka? Ta funkcja nazywa się 'walk()' (małe litery) –
O tak, to jest typo .. Właśnie napisałem to wszystko ręcznie tutaj, prawdziwa klasa jest czymś trudnym, ale pomyślałem, że może być zbyt specyficzna może dla stackoverflow .. .! –
@AndyProwl próbowałeś mi pomóc również wczoraj, na to samo pytanie, które było bardziej szczegółowe Andy .. odpowiedziałem, ale nie sądzę, że przeczytałeś to ... mój drugi post był: http://stackoverflow.com/ pytania/15226986/c-lnk-error-2019-nierozwiązany zewnętrzny-symbol-virtual-errors-because-of-an-inter # comment21465084_15226986 –