INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
undefined reference to
14.04.2019, 22:38
Beitrag #1
undefined reference to
Hallo ihr lieben Arduinos,

die Überschrift sagt es schon, was mich nervt.

Ich habe in den folgenden Ausschnitten die wichtigsten Sachen zusammengefasst.
Die nachstehende Klassendeklaration übersteht den Compilerlauf und den Build-Prozess klaglos.

Code:
/* -------------------------------------------------------------------------- */
/* *** function stack                                                         */
/* -------------------------------------------------------------------------- */
#define DMAX_FNSTACK    50

class FNSTACK {
  public:
    FNSTACK ();

    void inc_fn_stack (const char c[]);
    void dec_fn_stack (void);

private:
    uint16_t     fn_stackID = 0;
    const char  *fn_stack[DMAX_FNSTACK + 2];
};


auch bei den Definitionen hat der Complier nix zu meckern.
Code:
void FNSTACK::inc_fn_stack (const char c[]) {
   if (fn_stackID < DMAX_FNSTACK) {
      fn_stackID++;
      //const char *pStr = (const char*)c;
      fn_stack[fn_stackID] = c;
   }
}

void FNSTACK::dec_fn_stack (void) {

   if (fn_stackID > 0)
      fn_stackID--;
}


Aber dann geht es los. Sobald ich eine Instanz von FNStack erstelle, kommt die Compiler-Ausschrift wie im Code kommentiert. Was mich verwundert, die beiden anderen Klassen SCREENS und TSCONTROL haben keine derartigen Probleme gemacht.
Code:
#include "BandSawHelper.h"
#include "libraries/FNStack/FNStack.h"
/* -------------------------------------------------------------------------- */
/* *** defines                                                                */
/* -------------------------------------------------------------------------- */

#define SD_CS_PIN 53

/* -------------------------------------------------------------------------- */
/* *** instance                                                               */
/* -------------------------------------------------------------------------- */

SCREENS        lcd_DISPL;         // for TFT-LCD-display
TSCONTRL       lcd_TOUCH;         // for Touch-Screen
//SdFat          SD;
//FFile          myFile;

FNSTACK        fnStack; // <<== undefined reference to 'FNSTACK::FNSTACK()'

void setup () {
//    fnStack.inc_fn_stack ("void setup");

Also, wenn die FNSTACK-Instanz auskommentiert ist, läuft alles ohne Fehler ab. Was soll die Klasse machen? Sie soll Zeiger sammeln, wenn das Programm bestimmte Sequenzen durchläuft. Sie macht also nicht mehr als in den Methoden definiert wurde.

In meinem früheren Leben habe ich die Methoden (Funktion) eingesetzt, um beim Durchlauf Newton'scher Iterationen festzustellen, ob der Programmablauf wie geplant erfolgt ist. Aber das war noch in purem C. In C++ hingegen hab ich noch keinen Erfolg gehabt. Vielleicht hat jemand eine Idee, hoffentlich.

Vielen Dank schon mal im voraus.

ciao Batucada
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.04.2019, 09:09
Beitrag #2
RE: undefined reference to
Dem Linker fehlt der Code zum Konstruktor in der cpp.

Entweder fügst Du den noch ein oder Du entfernst FNSTACK (); aus der Headerdatei, dann legt er selbst einen Defaultkonstruktor an.

Für zukünftige Fälle stelle bitte Code bereit, der bis auf den diskutierten Fehler keine weiteren Fehler generiert, also soweit vollständig ist.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.04.2019, 17:44
Beitrag #3
RE: undefined reference to
(15.04.2019 09:09)Tommy56 schrieb:  Dem Linker fehlt der Code zum Konstruktor in der cpp.

Hallo,
wenn auch verspätet, trotzdem Danke für den Tipp.
Bisher war ich der Meinung, ein sauber (?) ausgeführter Construktor im Headerfile wäre ausreichend...

das andere werde ich beherzigen.

ciao Batucada
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.04.2019, 20:09
Beitrag #4
RE: undefined reference to
Er war ja nicht sauber ausgeführt. Es fehlte der Body, auch wenn er nur {} heißt, muss er angegeben werden.

Gruß Tommy

(17.04.2019 17:44)Batucadaèp' schrieb:  
(15.04.2019 09:09)Tommy56 schrieb:  Dem Linker fehlt der Code zum Konstruktor in der cpp.

Hallo,
wenn auch verspätet, trotzdem Danke für den Tipp.
Bisher war ich der Meinung, ein sauber (?) ausgeführter Construktor im Headerfile wäre ausreichend...

das andere werde ich beherzigen.

ciao Batucada

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  "undefined reference to Class::Methode" obwohl definiert da_user 9 1.144 21.02.2018 23:33
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste