私のコードは次のようなものです:
Basic.h
#define Type double
Model.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();
}
Model1.cpp
#include "Model.h"
Type Model1::compute(){
/*definition*/
}
Model2.cpp
#include "Model.h"
Type Model2::compute(){
/*definition*/
}
Method.h
#include "Model.h"
void Method(Model* sys);
メソッド.cpp
#include "Method.h"
void Method(Model* sys){
Type a=sys->compute();
/*code*/}
メイン.cpp
#include "Method.h"
int main(int argc, char** argv){
Model* sys=new Model2();
Method(sys);
/*code*/
}
問題は見つかりませんが、コンパイラは「エラー LNK2019: 未解決の外部シンボル void __cdecl Method(class Model *) referenced in function _main」と不平を言い続けます。
私はこれの初心者であり、キーを見つけることができないので、とてもイライラしています. 何が原因なのかわかりません: #define に何か問題がありますか? それとも、異なるサブクラスに同じ名前の関数があるためですか(問題ないようです)?それとも他のバグがありますか?この質問にどのタグを追加すればよいかさえわかりません...
誰でもこれを理解するのを手伝ってもらえますか? どうもありがとう!
提案していただきありがとうございます。すべてのコンストラクターが含まれていることを確認するために質問を更新しました。