Struktur C++
-
Hallo ,
wieso funktioniert das nicht ?
#include <iostream> struct test{ int x;char b;float z; }; int main() { test x{ 3,'A',2.3}; std::cout<<x.z; }
-
OK schon erledigt
= vergessen
-
Weil deine Struktur nur einen Standardkonstruktor hat
struct test { test(int x,char b,float z) : x(x),b(b),z(z) { } int x; char b; float z; };
-
Pellaeon schrieb:
Weil deine Struktur nur einen Standardkonstruktor hat
Nein, das ist hier nicht das Thema (Berücksichtige bitte auch die geschweiften Klammern bei der Strukturinitialisierung). Die Konstruktoren sind zwar in C++ durchaus ein üblicher Weg, bei PODs gibt es aber auch andere Alternativen.
-
Bei z. B. int-Feldern usw., ja da geht das. Aber bei einer Struktur/Klasse doch erst in C++0x !?
-
asc schrieb:
Die Konstruktoren sind zwar in C++ durchaus ein üblicher Weg, bei PODs gibt es aber auch andere Alternativen.
Genau genommen hat das nichts mit PODs zu tun, sondern mit Aggregaten. Darunter fallen neben Arrays auch eingeschränkte Klassen.
// Offensichtlich keine POD-Klasse struct MyClass { std::string str; int num; }; // Aggregats-Initialisierungsliste ok MyClass obj = {"hallo", 47};
Allerdings gibt es in modernerem C++ eher wenige Anwendungsfälle, da Konstruktoren sicherer und flexibler sind. Als Beispiel fällt mir gerade
std::tr1::array
ein. Mitstd::initalizer_list
in C++0x dürfte sich das Thema aber erledigen, weil dann eine Koexistenz von Initialisierungslisten und Konstruktoren möglich wird.
-
Vorteile class gegenüber struct ?
Vererbung was noch ?
-
dd66 schrieb:
Vorteile class gegenüber struct ?
Vererbung was noch ?
Nein. Einziger Unterschied ist das class default private ist und struct default public. Das war es.
-
aha . dachte immer das wäre was komplett anderes.
Noch eine Frage.
wenn ich in einer Datei eine funktion static deklariere, und diese
Datei in eine andere einbinde, dann ist die static funktion trotzdem nicht
sichtbar ?
-
Doch, sie ist sichtbar, aber existiert einmal für jede Übersetzungseinheit, und nicht wie
extern
-Funktionen einmal pro Programm.Stichwort interne Linkage.