我的代碼是這樣的:錯誤LNK2019
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);
Method.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*/
}
我無法找到任何問題,但編譯器保持在抱怨「錯誤LNK2019:無法解析的外部符號void __cdecl函數_ma中引用的方法(類Model *)在」。
我很沮喪,因爲我是初學者,無法找出答案。我不知道是什麼原因造成的:我的#define中有什麼不對嗎?或者是因爲不同的子類具有相同名稱的功能(看起來應該可以)?或者還有其他的錯誤?我甚至不知道給這個問題添加什麼標籤...
任何人都可以幫我弄清楚這個嗎?非常感謝!
感謝您的建議和我已更新的問題,以確保所有的構造函數都包含在內。
你寫過構造函數嗎? – Andrew 2012-07-17 08:51:32
這是什麼語法在做:'Model1():Model();'? – Nawaz 2012-07-17 08:52:09
你能告訴我們你是如何構建這個的? – Naveen 2012-07-17 08:52:35