Class Vererbung - expected class-name before '{' token

gegeben:
a.h

class a {
  private:
  public:
    void setA();
    void getA();
};

und a.cpp

#include "a.h"

void setA()
{
}
void getA()
{
}

b.h:

//class b {
class b :public a {
  private:
    int myByte;
  public:
    void setB();
    void getB();
};

und b.cpp

#include "b.h"

void setB()
{
}
void getB()
{
}

Sketch:


#include <Streaming.h>     // https://github.com/janelia-arduino/Streaming
#include "a.h"
#include "b.h"

void setup()
{
  Serial.begin(115200);
  Serial << (F("\r\nStart...\r\n")) << endl;

}

void  loop()
{}

Fehlermeldung:

b.h:2:19: error: expected class-name before '{' token
 class b :public a {
                   ^

Klammere ich die Vererbung aus, kompiliert es fehlerfrei.
Funktioniert so ein Grundgerüst nicht?
sketch_mar15e.zip (1,5 KB)

a.h

#pragma once

class a {
  private:
  public:
    void setA();
    void getA();
};

b.h

#pragma once
#include "a.h"

//class b {
class b :public a {
  private:
    int myByte;
  public:
    void setB();
    void getB();
};
1 Like

oder

a.h

#ifndef __A_H__
#define __A_H__
class a {
  private:
  public:
    void setA();
    void getA();
};
#endif

und a.cpp

#include "a.h"
void a::setA() {}
void a::getA() {}

b.h

#ifndef __B_H__
#define __B_H__
#include "a.h"

class b :public a {
  private:
    int myByte;
  public:
    void setB();
    void getB();
};
#endif

und b.cpp

#include "b.h"
void b::setB() {}
void b::getB() {}
1 Like

:man_facepalming: :man_facepalming: :man_facepalming:

Es ist nicht mein Tag.
:smiling_face_with_three_hearts:

Ja, kenne ich :wink: . Beachte aber auch den Post von @J-M-L . Wenn Du die Methoden außerhalb der Klassendefinition anlegst, brauchts auch den Klassennamen mit Bereichsoperator in den *.cpp Dateien.

Ja..

Was ja noch viel schlimmer ist: In meiner SML-Geschichte verwende ich das ja bereits.
Da habe ich mir einen "helper" angelegt, der die Splitfunktionen udn Ausgaben etc. inne hat - das klappt auch ganz gut.
Aber manchmal ist eben auch ein Mittwoch ein Freitag.

Na denne.

Jetzt muss ich nur mal anfangen mit Zeigern. Sonst wird das auch nix... :upside_down_face:

Oder Referenzen?

Ich hänge noch daran, das ich beim SML splitten erst während der Laufzeit die Größe der Elemente bekomme.
Im Falle der Listen und (un-)signed geht das alles fein. Aber bei den 07-er Einträgen muss ich mit Ketten arbeiten, die ich erst bauen kann, nachdem ich das Objekt angefasst habe und die Länge extrahiert habe.
Und ich tu mich schwer damit, irgendwas sinnvolles raus zu bekommen. Der Inhalt darf beim verlassen der jeweiligen Funkltionen ja nicht verloren gehen. (Also klassisch Array anlegen und refenzieren ist da nicht...)

Suchtipp: "C++ std::shared_ptr"

Evtl. kannst du dir hier was abschauen.
Für Avr.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.