Проблема с «неопределенными символами» / заголовками в C ++ - PullRequest
0 голосов
/ 13 марта 2020

Newb ie вопрос о заголовках / g ++ / 'неопределенные символы' в c ++.

Мой заголовочный файл blackjack.h содержит:

class BlackJackGame
    {
    private:
        Deck *m_deck;
        ComputerPlayer *m_casino;
        HumanPlayer *m_person;
        void printCasinoHand();
        void printHumanHand();

    public:
        BlackJackGame();
        void play();
    };

И в другом файле, main.cpp, у меня есть:

#include "blackjack.h"
using namespace std;

int main() {
    BlackJackGame game;
    game.play();
    return 0;
}

Определен блэкджек blackjack.cpp с:

#include "blackjack.h"
class BlackJackGame
{
private:
    Deck *m_deck;
    ComputerPlayer *m_casino;
    HumanPlayer *m_person;
    void printCasinoHand() {//something }
    void printHumanHand() {//something }
public:
    BlackJackGame() {//some constructer }
    void play() {//something }
}

Я компилирую, используя g++ main.cpp, и получаю ошибку:

Undefined symbols for architecture x86_64:
  "BlackJackGame::play()", referenced from:
      _main in main-15267e.o
  "BlackJackGame::BlackJackGame()", referenced from:
      _main in main-15267e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Какую ошибку я делаю? Буду признателен за помощь!

Ссылка на полные файлы: Файлы

1 Ответ

0 голосов
/ 13 марта 2020

Ваш Cpp должен иметь не объявление, а определение вместо

#include "blackjack.h"

void BlackJackGame::printCasinoHand() {//something }
void BlackJackGame::printHumanHand() {//something }

BlackJackGame::BlackJackGame() {//some constructer }
void BlackJackGame::play() {//something }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...