2016-07-27 2 views
5

Я пытаюсь скомпилировать очень базовую программу на C++ и что-то не так. Как бы то ни было, я уверен, что это очень очевидно. У меня три очень коротких файла.Compiling Basic C++ Class

main.cpp:

#include <iostream> 
#include "Player.h" 

using namespace std; 

int main() 
{ 
    Player rob; 
    cout << "Iran" << endl; 
    return 0; 
} 

Player.h

#ifndef PLAYER_H 
#define PLAYER_H 

class Player { 
public: 
    Player(); 
private: 
    int score; 
}; 

#endif 

Player.cpp

#include "Player.h" 

Player::Player(){ 
    score = 0; 
} 

Команда Я нно г компилировать является g++ main.cpp -o main И ошибка я выдаётся компилятором является:

/tmp/ccexA7vk.o: In function `main': 
main.cpp:(.text+0x10): undefined reference to `Player::Player()' 
collect2: error: ld returned 1 exit status 

Примечание: Все эти файлы находятся в том же каталоге.

+4

Попробуйте также компилировать файл 'player.cpp' ... Компилятор не может автоматически найти тело функции в некомпилированном файле. – Xarn

+5

Похоже, вы не компилируете Player.cpp. Дайте 'g ++ main.cpp Player.cpp -o main' попробовать. – user4581301

+4

Возможная дубликация [Что такое неопределенная ссылка/неразрешенная ошибка внешнего символа и как ее исправить?] (Http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external- symbol-error-and-how-do-i-fix) –

ответ

7

Как уже упоминалось в комментариях, вы не используете Player.cpp в компиляторе. Вы должны предоставить все файлы cpp компилятору.

g++ main.cpp Player.cpp -o main