| Autor |
Nachricht |
netrobot
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.05.2005
Beiträge: 313
|
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: 17930
|
SeppJ Moderator
14:41:16 27.04.2012 Titel: |
|
Zitieren |
|
 |
pyhax
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.11.2011
Beiträge: 692
|
pyhax Mitglied
14:44:43 27.04.2012 Titel: |
|
Zitieren |
| SeppJ schrieb: | | Ich nehme mal ein, dein Doppelpunkt soll ein Ausrufezeichen sein? |
Ein Ausrufezeichen ? |
_________________ Ich kann (teilweise): C++, Python, Java(ist lange her), PHP, D (Anfänger)
|
|
 |
netrobot
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.05.2005
Beiträge: 313
|
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
|
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: 17930
|
SeppJ Moderator
14:55:44 27.04.2012 Titel: |
|
Zitieren |
|
 |
netrobot
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.05.2005
Beiträge: 313
|
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
|
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: 17930
|
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 |
|
 |