Mon code est comme ceci:LNK2019 d'erreur pour une raison inconnue
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*/
}
Je ne trouve aucun problème, mais le compilateur ne cesse se plaindre « erreur LNK2019: symbole externe non résolu void __cdecl Méthode (classe Model *) référencée dans la fonction _ma dans".
Je suis tellement frustré parce que je suis un débutant et ne parviens pas à trouver la clé. Je ne sais pas ce qui peut causer ceci: est-ce que quelque chose ne va pas dans mon #define? Ou c'est parce que différentes sous-classes ont des fonctions avec le même nom (semble que cela devrait être OK)? Ou il y a d'autres bugs? Je ne sais même pas pour ajouter quels tags à cette question ...
Quelqu'un peut-il m'aider à comprendre cela? Merci beaucoup!
Merci pour les suggestions et j'ai mis à jour les questions pour s'assurer que tous les constructeurs sont contenus.
avez-vous écrit les constructeurs? – Andrew
Que fait cette syntaxe: 'Model1(): Model();'? – Nawaz
pouvez-vous nous montrer comment construisez-vous cela? – Naveen