error C2664



  • Der Fehler befindet sich in der Zeile mit der Kontrollstruktur "if (m_Driver.Send( &msg) == CAN_OK)" 🙂



  • Äh ja, danke für die Information, aber soviel war schon klar, einen anderen Send-Aufruf gibts ja nicht.



  • C++Pete schrieb:

    Der Fehler befindet sich in der Zeile mit der Kontrollstruktur "if (m_Driver.Send( &msg) == CAN_OK)" 🙂

    Das mag ja sein, aber die entscheidende Stelle zeigst Du uns trotzdem nicht.

    Du rufst eine Methode Send über eine Membervariable die auf ein Objekte einer uns unbekannten Klasse zeigt, die ein Bas::Message* möchte. Übergeben tust Du aber ein Message*. Das sagt die Fehlermeldung.

    Zeigen tust Du uns eine Funktion Send die ein Message* möchte.

    -> da fehlt etwas 😮


  • Mod

    MichelRT schrieb:

    C++Pete schrieb:

    Der Fehler befindet sich in der Zeile mit der Kontrollstruktur "if (m_Driver.Send( &msg) == CAN_OK)" 🙂

    Das mag ja sein, aber die entscheidende Stelle zeigst Du uns trotzdem nicht.

    Du rufst eine Methode Send über eine Membervariable die auf ein Objekte einer uns unbekannten Klasse zeigt, die ein Bas::Message* möchte. Übergeben tust Du aber ein Message*. Das sagt die Fehlermeldung.

    Zeigen tust Du uns eine Funktion Send die ein Message* möchte.

    -> da fehlt etwas 😮

    Kaffeesatz sagt, dass die Klasse Class bei ihm Bas heißt (oder von Bas erbt) und einen Typ namens Message enthält.



  • Die Klasse Class erbt von Bas.



  • So kommen wir nicht weiter.

    Meine Glaskugel muß zur Inspektion 😮



  • Mehr Informationen habe ich leider nicht. Kann deine Glaskugel mir intuitiv sagen, womit es zusammenhängen könnte?



  • C++Pete schrieb:

    Mehr Informationen habe ich leider nicht. Kann deine Glaskugel mir intuitiv sagen, womit es zusammenhängen könnte?

    Hatte ich gestern schon geschrieben:

    Bashar schrieb:

    Meine Glaskugel sagt mir, dass du irgendwo eine Klasse Bas hast, in der es einen Typ Message gibt. Außerdem gibt es noch einen Typ Message außerhalb davon. Und du hast den Überblick verloren. Sie sagt weiterhin, dass die Typen Copy&Paste-Varianten voneinander sind und demzufolge einer überflüssig ist.


  • Mod

    MichelRT schrieb:

    So kommen wir nicht weiter.

    Eigentlich schon. Das heißt, dass meine Vermutung ziemlich sicher richtig ist. C++-Pete versteht bloß leider nicht, was ich geschrieben habe. Womit weitere Hilfsversuche wohl ziemlich frustrierend sein werden, wenn der Fragesteller die Antworten nicht versteht. Ich hätte daran jedenfalls reichlich wenig Lust. Bisher sind C++-Petes sämtliche Threads sich allesamt sehr ähnlich. Ich denke, in keinem wurde ihm wirklich geholfen.



  • Jeder hat mal klein angefangen!


  • Mod

    C++Pete schrieb:

    Jeder hat mal klein angefangen!

    Klar, aber du bastelst hier nach eigener Aussage an einem fertigen Projekt rum in einer Sprache, die du nicht verstehst. Kein Wunder, dass das nichts wird! Der erste logische Schritt ist hier doch das gründliche Erlernen der Sprache.

    Bisher kam in fast jedem deiner Threads das Wort "Kristallkugel" (oder eine andere Wahrsagemetapher) in fast jeder Antwort vor. Das heißt, du weißt derzeit noch nicht einmal richtig, wie du überhaupt nach deinen Problemen fragen sollst, weil du sie nicht einmal selber richtig verstehst, sondern bloß die diffuse Vorstellung hast (meistens aufgrund von Fehlermeldungen), dass irgendetwas nicht stimmt. Du brauchst schlicht und einfach erst einmal genug Hintergrundwissen, um erkennen zu können, was überhaupt deine Probleme sind und wie du die Antworten interpretieren kannst.

    Zumindest, wenn du weiter Fragen auf diesem Niveau stellst. Wir erklären auch gerne "Hello World". Aber für Fragen zu komplizierten Fehlern in Klassengeflechten sind die Antworten nun einmal auch kompliziert. Vor allem, wenn die Hälfte der Antwort geraten ist, weil du nicht den relevanten Code erkennen und liefern konntest.

    Konntest du denn etwas anfangen, mit meiner und Bashars (identischen) Antworten?

    SeppJ schrieb:

    Kaffeesatz sagt, dass die Klasse Class bei ihm Bas heißt (oder von Bas erbt) und einen Typ namens Message enthält.

    Bashar schrieb:

    Meine Glaskugel sagt mir, dass du irgendwo eine Klasse Bas hast, in der es einen Typ Message gibt. Außerdem gibt es noch einen Typ Message außerhalb davon. Und du hast den Überblick verloren. Sie sagt weiterhin, dass die Typen Copy&Paste-Varianten voneinander sind und demzufolge einer überflüssig ist.

    Genauer geht's nicht, ohne dass sich jemand neben deinen Rechner stellt und dir das Programm korrigiert.



  • Fuchs aus dem Wald schrieb:

    C++Pete schrieb:

    Headerdatei:

    typedef struct {	
    	uint32_t cob_id;	
    	uint8_t	flags;	
    	uint8_t	len;	
    	uint8_t	data[8];	
    	uint32_t timestamp;
        } Message; //Struct vom Typ Message
    
    Driver		m_Driver;  //Objekt m_Driver der Klasse Driver erzeugen
    

    CPP-Datei:

    Message msg; //Alias vom Typ Message erzeugen
    
    bool Class::WriteMessage(uint32_t cob_id, uint8_t length, uint8_t* dataBytes) 
    {
    	CanMessage msg;
    	if (m_Driver.Send( &msg) == CAN_OK)
    	{
    		return true;
    	}	
    	return false;
    }
    

    Definition der Funktion Send:

    Send(Message *m)
    {
       return true;	
    }
    

    Nochmal zum mitschreiben.

    -Wir haben ein struct Message.

    -Eine globale Variable msg vom Typ Message.

    -Eine lokale Variable msg vom Typ CanMessage, die die globale Variable gleichen Namens verdeckt.

    -Wir haben eine Methode Send von einer unbekannten Klasse die laut Compiler einen Parameter vom Typ Bas::Message* möchte.

    -Dann haben wir noch eine freie Funktion Send der ein Parameter vom Typ Message* übergeben werden soll.

    - eine Methode WriteMessage einer ansonsten unbekannten Klasse Class, die laut Deiner Aussage von Bas erbt.

    -es gibt irgendwo einen Typen Bas::Message

    -es gibt irgendwo einen Typen CanMessage

    - und wir haben einen Compilerfehler der aussagt, dass CanMessage* nicht in Bas::Message* gewandelt werden kann.

    Ohne zu wissen wie CanMessage, Bas::Message und Deine Message zusammenhängen kann man Dir nicht helfen. Und ob Du die Hilfe dann auch verstehst ist wieder eine andere Sache 😕



  • Das Problem hat sich geklärt. Auch wenn ich eure Hilfe derzeit nicht immmer verstehe, hilft es mir anscheinend doch etwas auf die Sprünge ;). Manchmal braucht man eben doch kleine Denkanstöße, um vorangebrachtr zu werden. Parallel zu meiner Arbeit am Projekt schreibe ich auch immer kleine Programme, um C++ genauer zu verstehen. Um mit Fehlermeldungen an einen aufgezüchteten Projekt umzugehen, bedarf es schon mehr Erfahrng...das ist mir klar. Trotzdem wär es uneffektiv stur Kapitel aus Büchern durchzuarbeiten und zu hoffen, damit alle Probleme im Projekt zu lösen. Gerade deshalb hilft mir jeder höfliche Denkanstoß jedesmal ein Stückchen weiter 😉


Anmelden zum Antworten