Typproblem



  • void foo(T* x) { //...}
    void bar(T* x) { foo(x) }
    
    T v = 10;
    T &r = v;
    
    foo(&r);
    

    Der Compiler meldet einen typemismatch bzgl T* und T*&, wobei dieser Fehler aber erst für den Aufruf von foo() ind bar() auftritt. Sollte es wenn nicht schon beim Aufruf von foo() zum Fehler kommen?

    Wie kann ich diese Situation "auflösen"? konvertiere ich T& nach T* ohne Typprobleme zu bekommen?

    Danke!



  • Also folgendes

    typedef int T;
    
    void foo(T* x) { /*...*/} 
    void bar(T* x) { foo(x); } 
    
    int main()
    {
       T v = 10; 
       T &r = v; 
    
       foo(&r);
    }
    

    kompiliert ohne jegliche Probleme. Ich weiß nicht, welche Änderung um aus deinem Code ein kompilierbares Beispiel zu machen jetzt den Fehler entfernt hat, aber im Prinzip (denn das habe ich ja nicht geändert) sollte dein Code funktionieren.

    Felix



  • bärbel schrieb:

    void foo(T* x) { //...}
    void bar(T* x) { foo(x) }
    
    T v = 10;
    T &r = v;
    
    foo(&r);
    

    Der Compiler meldet einen typemismatch bzgl T* und T*&, wobei dieser Fehler aber erst für den Aufruf von foo() ind bar() auftritt. Sollte es wenn nicht schon beim Aufruf von foo() zum Fehler kommen?

    Wie kann ich diese Situation "auflösen"? konvertiere ich T& nach T* ohne Typprobleme zu bekommen?

    Danke!

    Die schließende, geschweifte Klammer von foo wird auskommentiert.



  • skullyan schrieb:

    bärbel schrieb:

    void foo(T* x) { //...}
    void bar(T* x) { foo(x) }
    
    T v = 10;
    T &r = v;
    
    foo(&r);
    

    Der Compiler meldet einen typemismatch bzgl T* und T*&, wobei dieser Fehler aber erst für den Aufruf von foo() ind bar() auftritt. Sollte es wenn nicht schon beim Aufruf von foo() zum Fehler kommen?

    Wie kann ich diese Situation "auflösen"? konvertiere ich T& nach T* ohne Typprobleme zu bekommen?

    Danke!

    Ja es wär schon spät heute Nacht ... macht aber nichts, es war nur ein Beispiel ... ich denke es sollte klar sein, worauf ich hinauswollte. Wenn ich von der Uni zurück bin, werd ich mal nen Auszug aus dem Origianlcode posten .. vlt fällt jemandem ja was auf. Danke schon mal für euer Bemühen!
    Die schließende, geschweifte Klammer von foo wird auskommentiert.



  • huch ^^


Anmelden zum Antworten