und was ist mit der
void (*TrackControl::sendmidi)(byte) = 0;
in der cpp ist das keine Intitialisierung ?
und was ist mit der
void (*TrackControl::sendmidi)(byte) = 0;
in der cpp ist das keine Intitialisierung ?
Schau dir mal an was du geposted hast. Da steht das in einer Funktion drin.
void TrackControl::setCallback (void (*pCallbackFunction)(byte)){
void (*TrackControl::sendmidi)(byte) = 0;
Sorry das ich dir da nicht folgen kann...
du hast geschrieben das diese Zeile in der cpp fehlt ..die einzige cpp ist TrackControl.cpp bestehend aus 2 Funktionen .. also muss ich deine Zeile zwangsweise ja in eine Funktion legen.
Danach hab ichs versuchsweise mal in der setup im .ino file probiert (vieleicht hast du ja die gemeint ) und habe trotzdem noch dieselbe Fehlermeldung.
(dein Code snippet aus Post #2 kompiliert auch nicht fehlerfrei.)
Ich hoffe hier findet sich noch jemand im Forum der in der Lage ist die 2 Zeilen Code die ich falsch habe zu berichtigen so daß ich das Konzept verstehen kann.
Ich Suche jetzt schon mehrere Tage im Internet und finde keine Lösung für eine statische callback Methode.
An alle noch eine schönes Wochenende
Dein Problem ist: Du willst eine statische Variable anlegen. Eine statische Variable im Headerfile anzulegen reicht nicht aus, weil aus einem Headerfile heraus der Compiler keine Speicherallokation durchführen kann. Deshalb musst du für eine statische Variable im allgemeinen Scope des C++ Files (Also nicht in einer funktion drin -> Da solltest du dir auch wirklich noch mal den Link den ich dir geposted habe durchlesen, ich poste das ja nicht umsonst).
D.h. diese Zeile solltest du außerhalb des Funktionsscopes haben:
void (*TrackControl::sendmidi)(byte) = 0;
Hallo shepede ...
wie schon gesagt ich habe diese zeile in der setup im .ino file probiert die Fehlermeldung ist die gleiche.
Und in der CPP sind nur 2 Funktionen wo soll ich denn da außerhalb was hinschreiben.
kannst du mir nicht konkret sagen wo genau diese Zeile stehen muss damit es funktioniert ?
und den Link hab ich mehr als einmal gelesen.
Dann solltest du vllt auch danach googlen was der globale Scope eines C++ Files ist.
Du gehst hin und schreibst direkt unter dem #include <dein headerfile> die Zeile für die Statische Variable hin. So steht das auch in dem Link und gehört leider so sehr zu den Grundlagen, dass ich dir noch mal ein gutes Tutorial anraten würde.
Also um es noch mal klar zustellen.
Code:#include <TrackControl.h> void (*TrackControl::sendmidi)(byte) = 0; void TrackControl::setCallback (void (*pCallbackFunction)(byte)){ }
Danke ....
Ich weiß das solche Probleme für andere ein Witz sind. Und das für mich das Konzept der Sprache C nicht gerade schlüssig ist merkt mann ja.
Ich entwickle hauptsächlich unter vb.net und in meiner Welt gibt es keinen Code Außerhalb von Klassen und Methoden. Auch Zugriff auf
Funktionen in anderen Klassen etc mach ich über den Namespace da brauch ich keinen callback für , es sei denn mal nen invoke.
Behaltet bitte im Hinterkopf daß hier nicht nur Profis hinterm PC sitzen . Schließlich ist ein Forum hauptsächlich da zu helfen und nicht
den Wissensstand eurer Mitmenschen zu kritisieren.
Trotzdem bin Ich froh das du mir die Lösung gezeigt hast ... da wär ich nie drauf gekommen...![]()
Lesezeichen