Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  class member initialisierung     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
netrobot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2005
Beiträge: 313
Beitrag netrobot Mitglied 14:16:46 27.04.2012   Titel:   class member initialisierung            Zitieren

C++:
unsigned m_width : 32;

was bedeutet das, wenn man in class deklaration schreibt, m_width = 32 ?

d.h, man kann das member direkt in class initialisieren?
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17958
Beitrag SeppJ Moderator 14:41:16 27.04.2012   Titel:              Zitieren

Ich nehme mal ein, dein Doppelpunkt soll ein Ausrufezeichen sein?

Das ist eine Initialisierung die dann und genau dann ausgeführt wird, wenn in einer Initialisierungsliste im Konstruktor keine anderslautende Initialisierung stattfindet.

Dies wurde mit C++11 eingeführt.

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
pyhax
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.11.2011
Beiträge: 692
Beitrag pyhax Mitglied 14:44:43 27.04.2012   Titel:              Zitieren

SeppJ schrieb:
Ich nehme mal ein, dein Doppelpunkt soll ein Ausrufezeichen sein?


Ein Ausrufezeichen :eek: ?

_________________
Ich kann (teilweise): C++, Python, Java(ist lange her), PHP, D (Anfänger)
netrobot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2005
Beiträge: 313
Beitrag netrobot Mitglied 14:46:59 27.04.2012   Titel:              Zitieren

Zitat:
Das ist eine Initialisierung die dann und genau dann ausgeführt wird, wenn in einer Initialisierungsliste im Konstruktor keine anderslautende Initialisierung stattfindet.

d.h. es ist auch eine art wertzuweisung
Zitat:
Ich nehme mal ein, dein Doppelpunkt soll ein Ausrufezeichen sein?

wie kann das sein?
Tachyon
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.12.2003
Beiträge: 3467
Beitrag Tachyon Mitglied 14:52:29 27.04.2012   Titel:              Zitieren

SeppJ schrieb:
Ich nehme mal ein, dein Doppelpunkt soll ein Ausrufezeichen sein?

Das ist eine Initialisierung die dann und genau dann ausgeführt wird, wenn in einer Initialisierungsliste im Konstruktor keine anderslautende Initialisierung stattfindet.

Dies wurde mit C++11 eingeführt.

Macht man das nicht mit '='? '!' wäre mir neu.

Ich tippe aber eher darauf, dass es sich hier um Bitfelder handelt.

_________________
タキオン


Zuletzt bearbeitet von Tachyon am 14:55:12 27.04.2012, insgesamt 1-mal bearbeitet
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17958
Beitrag SeppJ Moderator 14:55:44 27.04.2012   Titel:              Zitieren

Da hatte ich einen Denkaussetzer. Ich wollte Gleichheitszeichen schrieben, aber da haben meine Finger irgendwie etwas anderes getippt.

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
netrobot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2005
Beiträge: 313
Beitrag netrobot Mitglied 15:00:01 27.04.2012   Titel:              Zitieren

C++:
unsigned m_width = 32;

kann auch nicht sein,
C++:
class foo
{
   protected:
   unsigned m_width = 32; //? lässt compilieren?
}


Zuletzt bearbeitet von netrobot am 15:00:21 27.04.2012, insgesamt 1-mal bearbeitet
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 5618
Beitrag dot Mitglied 15:05:41 27.04.2012   Titel:              Zitieren

Ich vermute mal es handelt sich um ein bitfield. Aber so außerhalb von jeglichem Kontext kann man das schwer sagen...

_________________
one point of view will never reveal the entire scene.
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17958
Beitrag SeppJ Moderator 15:09:47 27.04.2012   Titel:              Zitieren

Was hast du denn nun? Es gibt
C++:
class foo{
 unsigned m_width : 32;    
};
Das ist das was du geschrieben hast, das ist ein Bitfeld. Und es gibt
C++:
class foo{
 unsigned m_width = 32;    
};
Das ist das, wonach du gefragt hast, das ist eine in-class-initialization. Beides ganz verschiedene Konstrukte mit sehr verschiedenen Bedeutungen. Falls letzteres sich nicht compilieren lässt, dann kennt dein Compiler dieses C++11-Feature nicht oder (wahrscheinlicher) du hast dem Compiler nicht gesagt, dass er C++11 benutzen soll.

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List


Zuletzt bearbeitet von SeppJ am 15:10:41 27.04.2012, insgesamt 1-mal bearbeitet
c++.de :: C++ (auch C++0x und C++11) ::  class member initialisierung   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.