第一个 c++ 文件和 header LNK2019 错误

First c++ file and header LNK2019 error

这是我第一次拥有单独的文件,也是我第一次编写 header 文件,但是我总是遇到无法修复的相同错误。以下是文件:

//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 中注释掉的 class,一切正常。但是,一旦我尝试将 Bike class 分离到另一个 cpp 文件中,我就会收到此错误:

Error 1   error LNK2019: unresolved external symbol "public: int
__thiscall Bike::getTyreDi(void)" (?getTyreDi@Bike@@QAEHXZ) 

Error 2   error LNK1120: 1 unresolved externals

我使用的是 Microsoft Visual Studio 2013。 任何帮助将不胜感激

为什么要定义 class Bike 两次?在 cpph 中,正确的方法是这样的: header

//Bike.h
#ifndef BIKE_H
#define BIKE_H

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

#endif

cpp

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