Instanziierung nur durch speziellen Konstruktor



  • Ich verwende MS VS 2008 Prof. Edition, sollte also nicht das Problem sein 😉 .

    Genau, die Instanz wird in der WinMain() erstellt, also außerhalb der Klasse.

    Folgender Aufruf funktioniert nicht (sry, vorher hatte ich das Cfoo vergessen):

    Cfoo foo;
    

    Ich möchte aber, dass dieser hier auch nicht funktioniert:

    Cfoo foo();
    

    Nur dieser soll erlaubt sein:

    Cfoo foo(1, 2);
    


  • Ah. 🙂

    Das ist weder ein Aufruf noch eine Objekt-Instanziierung, sondern eine Funktionsdeklaration. Du brauchst dir also keine Sorgen zu machen, der Standardkonstruktor wird nicht aufgerufen. 😉



  • Kloppi schrieb:

    Ich möchte aber, dass dieser hier auch nicht funktioniert:

    Cfoo foo();
    

    Gegen den kannst du nichts machen, weil das eine Funktionsdeklaration ist. Da wird gar kein Objekt erzeugt.



  • Achso, ich verstehe .. also wenn das einer in seine WinMain() schreibt ist das einfach nur effekt-/sinnfrei, wird sicher vom Compiler wegoptimiert, weil die funktion net benutzt wird und keinen Inhalt hat, oder!?

    Aber warum meckert mein Compiler nicht, dass die Funktion nicht benutzt wird, nix returned und so weiter...?

    Danke allen Beteiligten schonmal 😉 👍 !



  • KloppiDankt schrieb:

    Achso, ich verstehe .. also wenn das einer in seine WinMain() schreibt ist das einfach nur effekt-/sinnfrei, wird sicher vom Compiler wegoptimiert, weil die funktion net benutzt wird und keinen Inhalt hat, oder!?

    Aber warum meckert mein Compiler nicht, dass die Funktion nicht benutzt wird, nix returned und so weiter...?

    Danke allen Beteiligten schonmal 😉 👍 !

    Tu mal die Warnungen aufs Maximum und dann noch Warnungen als Fehler behandeln..

    Dann hast dus. 😉



  • Die MSVC++-Warnungen sind wirklich gut.

    Funktion mit Prototyp wurde nicht aufgerufen (war eine Variablendefinition gemeint?)



  • Tu mal die Warnungen aufs Maximum

    Wo? Danke!



  • Projekt -> Projekteigentschaften -> C/C++ -> Allgemein -> Warnungen als Fehler behandeln



  • drakon schrieb:

    Projekt -> Projekteigentschaften -> C/C++ -> Allgemein -> Warnungen als Fehler behandeln

    Das würde ich nicht unbedingt. Gewisse Warnungen sind nämlich nur zum Nerven da. 😃

    Die Warnstufe müsste man erhöhen.
    Projekteigenschaften -> C/C++ -> Warnstufe -> Level 4



  • Nexus schrieb:

    drakon schrieb:

    Projekt -> Projekteigentschaften -> C/C++ -> Allgemein -> Warnungen als Fehler behandeln

    Das würde ich nicht unbedingt. Gewisse Warnungen sind nämlich nur zum Nerven da. 😃

    Ja, schon.. z.B dass eine Variable nicht verwendet wird.. *argh*.. Die Implementierung kommt später. Am Anfang soll einfach alles da sein, was man braucht.. Das ist der Grund, warum ich auf 3 und nicht 4 bin..



  • Was mich ein bisschen genervt hat, war die Warnung in <boost/lexical_cast.hpp> wegen nicht erreichbarem Code. Das fand wohl einer von Boost lustig...

    Weisst du eigentlich grad, wie man Linkerwarnungen wegbekommt?


Anmelden zum Antworten