我的代码是这样的:
基本.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/