Неразрешенные внешние [Конструкторы]

Возможный дубликат:
Что такое неопределенная ссылка / неразрешенная внешняя ошибка символа и как ее исправить?

У меня проблема с компоновщиком, которую я просто не могу решить ..
Уже попробовал все, что мог придумать
У меня есть Baseclass (Person) и Derived Class (Dealer), и я просто хочу вызвать конструктор из класса CardStack, который является членом класса Dealer.

Вот мой код:

Person.h

#ifndef PERSON_H
#define PERSON_H
#include "Card.h"#include "Hand.h"
class Person
{
public:
Person(void);
virtual ~Person(void);
virtual bool TakeCard(Card c);
virtual bool Lost(void);

protected:
virtual void CheckLost(void);
bool b_Lost;
Hand m_Hand;
};
#endif

Dealer.h

    #ifndef DEALER_H
#define DEALER_H

#include "Person.h"#include "Card.h"#include "CardStack.h"
class Dealer : public Person
{
public:
Dealer(int stackcount);
virtual ~Dealer(void);
bool TakeCard(Card c);
bool Lost(void);
Card GiveCard(Card c);

protected:
void CheckLost(void);
CardStack m_GameStack;
};
#endif

Dealer.cpp

#include "Dealer.h"
Dealer::Dealer(int stackcount) : Person(), m_GameStack(stackcount)
{

};

Dealer::~Dealer(void)
{

};

bool Dealer::TakeCard(Card c)
{
if(!b_Lost || m_Hand.GetTotal() <= 17)
{
m_Hand.Take(c);
CheckLost();
return true;
}

return false;
};

void Dealer::CheckLost()
{
if (m_Hand.GetTotal() > 21)
{
b_Lost = true;
}
};

bool Dealer::Lost()
{
return b_Lost;
};

Я честно попробовал все, что мог придумать, но я не мог понять, в чем ошибка …

Вот вывод при компиляции Dealer.cpp:

1> Dealer.obj: ошибка LNK2019: неразрешенный внешний символ «public: virtual __thiscall Person :: ~ Person (void)» (?? 1Person @@ UAE @ XZ), на который ссылается функция __unwindfunclet $ ?? 0Dealer @@ QAE @ H @ Z $ 0

1> Dealer.obj: ошибка LNK2001: неразрешенный внешний символ «public: virtual bool __thiscall Person :: TakeCard (class Card)» (? TakeCard @ Person @@ UAE_NVCard @@@ Z)

1> Dealer.obj: ошибка LNK2001: неразрешенный внешний символ «public: virtual bool __thiscall Person :: Lost (void)» (? Lost @ Person @@ UAE_NXZ)

1> Dealer.obj: ошибка LNK2001: неразрешенный внешний символ «защищен: виртуальный void __thiscall Person :: CheckLost (void)» (? CheckLost @ Person @@ MAEXXZ)

1

Решение

Похоже, вы пытаетесь скомпилировать Dealer.cpp в программу самостоятельно. Это не работает, потому что это зависит от определения методов в Person, которые, вероятно, находятся в Person.cpp. Было бы полезно, если бы вы показали нам команду, которую использовали для компиляции. Но при условии, что вы используете g ++, вы, вероятно, пытались

g++ Dealer.cpp

То, что вы должны были сделать, это либо

g++ Person.cpp Dealer.cpp etc.

или же

g++ -c Dealer.cpp
g++ -c Person.cpp

и т.д., а затем

g++ Dealer.o Person.o etc.
-2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]