2015-08-02 3 views
0

Это мой первый раз, когда у меня есть отдельные файлы и первый раз пишут заголовочный файл, однако я продолжаю получать ту же ошибку, которую я не могу исправить. Вот файлы:Первый файл и заголовок C++ LNK2019 error

//main.cpp  
#include <iostream> 
#include "Bike.h" 

/* 
class Bike{ 
public: 
    int tyreDiameter; 
    int getTyreDi(){ 
     return tyreDiameter; 
    } 
}; */ 

int main(){ 
    Bike b; 
    b.tyreDiameter = 50; 
    std::cout << b.getTyreDi(); 

while (1){ 
    continue; 
} 

return 0; 
} 

//Bike.cpp 
class Bike{ 
    public: 
     int tyreDiameter; 
     int getTyreDi(void){ 
      return tyreDiameter; 
     } 
}; 

//Bike.h 
#ifndef BIKE_H 
#define BIKE_H 

class Bike{ 
    public: 
     int tyreDiameter; 
     int getTyreDi(void); 
}; 

#endif 

Теперь, если у меня есть только один файл и использовать класс, который комментировал в main.cpp все работает отлично. Но как только я пытаюсь отделить класс велосипед в другой файл CPP я получаю эту ошибку:

Error 1 error LNK2019: unresolved external symbol "public: int 
__thiscall Bike::getTyreDi(void)" ([email protected]@@QAEHXZ) 

Error 2 error LNK1120: 1 unresolved externals 

Я использую Microsoft Visual Studio 2013. Любая помощь будет высоко ценится

ответ

0

Почему вы определения класс Bike дважды? в cpp и в h, правильный путь будет таким: заголовок

//Bike.h 
#ifndef BIKE_H 
#define BIKE_H 

class Bike{ 
    public: 
     int tyreDiameter; 
     int getTyreDi(void); 
}; 

#endif 

каст

//Bike.cpp 
#include "Bike.h" 
int Bike::getTyreDi(void) 
{ 
    //implementation like return tyreDiameter; 
} 
+0

Спасибо за быстрый ответ. Итак, из того, что вы говорите, я был бы прав предположить, что заголовочный файл описывает, что класс будет выглядеть синтаксически, а файл cpp просто определяет функции этого класса? – Mick

+0

@ Мик Правильно. Файл заголовка описывает, что должен делать класс, и файл cpp описывает, как это сделать. –

+0

Большое спасибо Jamey. Еще одна вещь, пожалуйста; то, что вы сказали, отлично работает в MSVS2013, однако мне нравится использовать Notepad ++ и компилировать с использованием компилятора командной строки MSVS2013. Когда я пытаюсь выполнить команду 'cl/EHsc main.cpp' (без кавычек), она дает мне ту же ошибку, что и выше. Любые идеи, пожалуйста? – Mick