Eigenen Datentyp?
-
SeppJ schrieb:
Hacker schrieb:
`
long long int` ist sein C++11 standardisiert.
Schon komisch, dass der
SeppJ schrieb:
C++98
Standard das nicht weiß
Ich les mal wieder zu wenig
Aberlong long
gab es doch schon seit C++98?
-
Nein. Viele (so gut wie alle) Compiler haben es als Erweiterung angeboten, aber Standard war es vor C++11 nicht.
-
SeppJ schrieb:
Hacker schrieb:
`
long long int` ist sein C++11 standardisiert.
Schon komisch, dass der
SeppJ schrieb:
C++98
Standard das nicht weiß
ich wette, da gibt es noch mehr Dinge im C++11 Standard, die der 98er Standard noch nicht kennt
-
daddy_felix schrieb:
SeppJ schrieb:
Hacker schrieb:
`
long long int` ist sein C++11 standardisiert.
Schon komisch, dass der
SeppJ schrieb:
C++98
Standard das nicht weiß
ich wette, da gibt es noch mehr Dinge im C++11 Standard, die der 98er Standard noch nicht kennt
Ich wette dagegen. Denn der C++11 Standard beinhaltet so ungefähr alles, was der C++98 auch beinhaltet (bis auf die Sachen die syntaktisch verändert wurden).
int
beinhalten auch beide.Und das "noch" kannst du wegmachen, wieso noch?
-
Der C++98 Standard hatte 715 Seiten, C++11 hat 1310. Nur mal so als Einwurf.
-
314159265358979 schrieb:
Der C++98 Standard hatte 715 Seiten, C++11 hat 1310. Nur mal so als Einwurf.
Das gibts ja garnich'
So viel neues?
-
314159265358979 schrieb:
Der C++98 Standard hatte 715 Seiten, C++11 hat 1310. Nur mal so als Einwurf.
Hab die das http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#334 angehangen?
-
Hacker schrieb:
daddy_felix schrieb:
ich wette, da gibt es noch mehr Dinge im C++11 Standard, die der 98er Standard noch nicht kennt
Ich wette dagegen. Denn der C++11 Standard beinhaltet so ungefähr alles, was der C++98 auch beinhaltet (bis auf die Sachen die syntaktisch verändert wurden).
int
beinhalten auch beide.Und das "noch" kannst du wegmachen, wieso noch?
Hacker schrieb:
Ich les mal wieder zu wenig
-
Michael E. schrieb:
Hacker schrieb:
daddy_felix schrieb:
ich wette, da gibt es noch mehr Dinge im C++11 Standard, die der 98er Standard noch nicht kennt
Ich wette dagegen. Denn der C++11 Standard beinhaltet so ungefähr alles, was der C++98 auch beinhaltet (bis auf die Sachen die syntaktisch verändert wurden).
int
beinhalten auch beide.Und das "noch" kannst du wegmachen, wieso noch?
Hacker schrieb:
Ich les mal wieder zu wenig
Stop. Wieso? Der C++11-Standard behält doch viel vom alten. Außerdem werd' ich doch nicht wie camper den ganzen Standard lesen.
-
Hi Leute!
Ich hab nun den code von gestern noch ein bisschen verbessert. Leider geht er aber nicht. Ich weiß aber auch nicht wo der Fehler ist, da die Fehler die er ausspuckt, ich noch nie gelesen habe:
Fehler 4 error LNK1120: 2 nicht aufgelöste externe Verweise. C:\Users\Tobias Mehrl\Desktop\U1Aufgabe1\Debug\U1Aufgabe1.exe 1
Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall meinDatentyp::~meinDatentyp(void)" (??1meinDatentyp@@QAE@XZ)" in Funktion "_main". C:\Users\Tobias Mehrl\Desktop\U1Aufgabe1\U1Aufgabe1\U1Aufgabe1.obj
Fehler 3 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall meinDatentyp::meinDatentyp(int)" (??0meinDatentyp@@QAE@H@Z)" in Funktion "_main". C:\Users\Tobias Mehrl\Desktop\U1Aufgabe1\U1Aufgabe1\U1Aufgabe1.objHier der neue Code:
#include<iostream> #include<ctime> using namespace std; class meinDatentyp { private: int n; int *feld; public: meinDatentyp(int n); ~meinDatentyp(); void init(int n); void print(); void fillRandom(); void min(); }; void meinDatentyp::init(int n) { feld = new int [n]; for(int i=0; i<n; i++) { feld[i] = 0; } } void meinDatentyp::print() { for(int i=0; i<n; i++) { cout << feld[i]; cout << endl; } } void meinDatentyp::fillRandom() { srand(time(0)); for(int i=0; i<n; i++) { feld[i] = (rand() % 100); } } void meinDatentyp::min() { int ergebnis = 0; float mittelwert = 0; for(int i=0; i<n; i++) { ergebnis = ergebnis + feld[i]; } cout << "Mittelwert = " << (float)ergebnis / n; } int main() { meinDatentyp a(5); a.init(5); a.fillRandom(); a.print(); a.min(); system("pause"); return 0; }
Könnt ihr mir helfen?
-
1. Kein
return 0;
2. Keinsystem("pause");
3. Du hast den Destruktor nicht definiert -> lösch die "~meinDatentyp();
" Zeile wenn er sowieso trivial sein soll
4. Den Konstruktor hast du ebenso wenig definiert -> änder in Zeile 24void meinDatentyp::init(int n)
zu
void meinDatentyp::meinDatentyp(int n)
Soviel erstmal.
Bitte Initialisierungs-listen verwenden:void meinDatentyp::meinDatentyp(int n): feld( new int[n]() ) { }
Mit dem
()
nach den Indiz-Klammern wird automatisch alles mit 0 initialisiert.void meinDatentyp::min() { int ergebnis = 0; float mittelwert = 0;//wird nicht verwendet (sollte warnungen geben) for(int i(0); i < n; i++) ergebnis = ergebnis + feld[i]; std::cout << "Mittelwert = " << static_cast<float>(ergebnis) / n; // C++-Casts }
NIE
using namespace ...;
in Headern!srand(...)
muss in diemain()
(wird nur einmal ausgeführt)
-
Hacker schrieb:
1. Kein
return 0;
Was habt ihr eigentlich immer an
return 0
zu meckern?
-
Gugelmoser schrieb:
Hacker schrieb:
1. Kein
return 0;
Was habt ihr eigentlich immer an
return 0
zu meckern?Es ist unnötig!
Ach ja! Ein Sache vergessen, du musst natürlich auch die
init()
Deklaration in der Klasse löschen, damit es keine Linkerfehler gibt.
-
Hacker schrieb:
Gugelmoser schrieb:
Hacker schrieb:
1. Kein
return 0;
Was habt ihr eigentlich immer an
return 0
zu meckern?Es ist unnötig!
Ach ja! Ein Sache vergessen, du musst natürlich auch die
init()
Deklaration in der Klasse löschen, damit es keine Linkerfehler gibt.Ich finds inkonsistent.
-
Gugelmoser schrieb:
Hacker schrieb:
Gugelmoser schrieb:
Hacker schrieb:
1. Kein
return 0;
Was habt ihr eigentlich immer an
return 0
zu meckern?Es ist unnötig!
Ach ja! Ein Sache vergessen, du musst natürlich auch die
init()
Deklaration in der Klasse löschen, damit es keine Linkerfehler gibt.Ich finds inkonsistent.
Quatsch, es erleichtert allen Pro's das Lesen.
return 0;
suggeriert, dass uns der Rückgabewert vonmain()
(gerade in diesem Fall) interessiert. Tut er aber nicht! Also keinreturn;
.
-
Hacker schrieb:
Stop. Wieso? Der C++11-Standard behält doch viel vom alten.
Mit dem Textverständnis ists heute nicht so weit her, oder? Der neue Standard enthält Dinge, die nicht im alten Standard stehen (sonst bräuchte man gar keinen neuen Standard). Also "gibt es noch mehr Dinge im C++11 Standard, die der 98er Standard noch nicht kennt". Das hat nix damit zu tun, dass der neue Standard gut über den alten Standard Bescheid weiß.
-
Hacker schrieb:
Quatsch, es erleichtert allen Pro's das Lesen.
Woher weißt du das, kennst du einen?
-
Bashar schrieb:
Hacker schrieb:
Quatsch, es erleichtert allen Pro's das Lesen.
Woher weißt du das, kennst du einen?
Er müsste sogar ziemlich viele kennen, um eine Aussage über alle "Pro's" (das tut so weh beim Lesen, haben wir auch Leute hier, die "Tisch'e" schreiben?) machen zu können.
-
Na,
#include <iostream> int main() { std::cout << "A" << std::endl; }
ist IMO viel schöner als
#include <iostream> int main() { std::cout << "A" << std::endl; return 0; }
-
Hacker schrieb:
Na, [2-SLOC-Code] ist IMO viel schöner als [3-SLOC-Code]
Bläht das ganze Programm ja auch um die Hälfte auf.
Ich als Pro würde natürlich schreiben
int main() { return !(std::cout << "A\n"); }