c++ - 错误 LNK2019,原因不明

标签 c++ class

我的代码是这样的:

基本.h

#define Type double

模型.h

#include "Basic.h"

class Model{
 protected:
  int _N;
 public:
  Model(int _N, Type* config){ config=new Type[N]; _N=N}
  virtual Type compute();
}
class Model1: public Model{
 protected:
  int _Nr,_Nc;
 public:
  Model1(int Nr, int Nc, Type* config):Model(Nr*Nc,config){_Nr=Nr;_Nc=Nc;}
  virtual Type compute();
}
class Model2: Public Model{
 public:
  Model2(int N,Type* config):Model(N,config){/*other unrelated codes*/}
  virtual Type compute();
}

模型1.cpp

#include "Model.h"

Type Model1::compute(){
/*definition*/
}

模型2.cpp

#include "Model.h"

Type Model2::compute(){
/*definition*/
}

方法.h

#include "Model.h"

void Method(Model* sys);

方法.cpp

#include "Method.h"

void Method(Model* sys){ 
Type a=sys->compute();
/*code*/}

main.cpp

#include "Method.h"

int main(int argc, char** argv){
  Model* sys=new Model2();
  Method(sys);
  /*code*/
}

我找不到任何问题,但编译器一直提示“error LNK2019: unresolved external symbol void __cdecl Method(class Model *) referenced in function _main”。

我很沮丧,因为我是这方面的初学者,没能找到关键。我不知道是什么原因造成的:我的#define 有什么问题吗?或者是因为不同的子类有同名的函数(看起来应该没问题)?还是有其他BUG?我什至不知道要为这个问题添加什么标签...

谁能帮我解决这个问题?非常感谢!


感谢您的建议,我已经更新了问题以确保包含所有构造函数。

最佳答案

似乎 Method.cpp 不是项目的一部分,所以它没有被编译,链接器也找不到 Method

您应该将所有 CPP 文件添加到您的项目中 - Main、Method、Model1 和 Model2。当你这样做的时候,确保 H 文件也都在那里。

关于c++ - 错误 LNK2019,原因不明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519011/

相关文章:

c++ - 我做错了什么? GetDiskFreeSpaceExA 的功能根本不起作用

c++ - vs2015 cuda9.0 链接 SHA1_Init 与 CUDA 实现而不是 openssl cpu 库

c++ - 在类模板中专门化类模板?

PHP 类名来自变量并带有 "class not found"检查?

c++ - 对具有不可复制值的 STL 容器使用 boost 序列化时出现编译错误

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?

javascript - 在javascript类中使用它

c++ - C++ 将对象的内容写入文件

function - opengl中变量名后面的星号(*)是什么意思?

c++ - 将基类转换为派生类还是在基类上创建虚函数更好?