Fehler LNK2019: nicht aufgelöstes externes Symbol "public: __thiscall Signal

Wenn ich die main() Funktion aufrufen bekomme ich einen Fehler:

Fehler 2 Fehler LNK2019: nicht aufgelöstes externes Symbol "public: __thiscall Signal :: Signal (void)" (?? 0? $ Signal @ H @@ QAE @ XZ) referenziert in der Funktion "public: __thiscall Img :: Img (int, int ) "(?? 0? $ Img @ H @ QAE @ HH @ Z) c: \ Benutzer \ Maja \ Dokumente \ Visual Studio 2012 \ Projekte \ Projekt6 \ Projekt6 \ Img.obj Projekt

Kann mir jemand sagen, wie ich Linker so einstellen kann, dass er den Standardkonstruktor nicht aufruft und ich ihn anrufe?

template  class Signal {

protected: int N;                              //width of array
       int M;
private:   double deltaT;                      //sampling period
       double t0;                          //initial time
           int flag;                           //indicator
public:  
       T* sig;                             //array of type T
       T** sig2D;
       Signal(void);                   //constructor
       Signal (int);                       //constructor
       Signal (int,int);
       Signal (int,double);                //constructor      
       Signal(int,int,double);
       Signal (int,double,double);         //constructor
       Signal(int,int,double,double);
};


template  class Img:public Signal
{
public:
    Img(void);
    ~Img(void);
    Img(int,int);
};


template  Img::Img(int a,int b){
    Signal(a,b); //or Signal::Signal(a,b);
}

int main() {

    Img *a=new Img(2,3);
}
0

1 Antworten

Sie müssen Basisklassen in der Initialisierungsliste initialisieren:

template  Img::Img(int a,int b) :
    Signal(a,b) //here
{
   //not here
}

Ihre Version versucht, das Basisobjekt standardmäßig zu konstruieren, da es in der Initialisierungsliste nicht erwähnt wird und dann ein temporäres lokales Objekt erstellt und zerstört.

0
hinzugefügt
Ich danke dir sehr!
hinzugefügt der Autor user3094708, Quelle
Ich erkenne, dass ich nicht zugreifen kann, auch wenn es öffentlich ist, aber vor der Deklaration in Ableitung Klasse sollte ich mit Signal :: getHeight setzen und es funktioniert.
hinzugefügt der Autor user3094708, Quelle
@ user3094708: Wenn Sie eine andere Frage haben, dann sollten Sie eine andere Frage stellen - es ist schwer, Code-Teile in Kommentaren zu lesen oder genug Details zu geben, um das Problem klar zu beschreiben. Wenn getHeight öffentlich ist, sollte es zugänglich sein.
hinzugefügt der Autor Mike Seymour, Quelle
@ user3094708: Wenn Sie eine andere Frage haben, sollten Sie eine andere Frage stellen - als Frage, nicht als Kommentar zu dieser Antwort.
hinzugefügt der Autor Mike Seymour, Quelle