matrix[0][1] == matrix[1][0] ... ???
-
-
nirsaja schrieb:
Außerdem solltest du statt
<< "\n";<< endl;verwenden

genau umgekehrt!
endl leert gleichzeitig noch den buffer was ne schlimme bremse sein kann. auch sorgen die iostreams selbst dafür, dass die buffer geleert werden sobald eine eingabe erwartet wird.
-
otze schrieb:
nirsaja schrieb:
Außerdem solltest du statt
<< "\n";<< endl;verwenden

genau umgekehrt!
Ne, man nimmt das, was Sinn macht. Wenn der Buffer geflusht werden soll endl und wenn man nur nen Zeilenumbruch braucht \n.
-
Ich bin bei meinem Problem ein wenig weiter.
Wenn ich das Array so initialisiere:
int matrix[2][2];Tritt der Fehler nicht auf.
Wenn ich jedoch:
The_Matrix::The_Matrix(int rows, int columns) { int matrix[rows][columns]; //blabla hier kommt der andere krams. rows, columns = 2 }Dann tritt der Fehler (merkwürdigerweise?) auf.
Blick ich immer noch nicht.p.s. Vielen Dank für die '\n' Infos, sehr spannend zu erfahren :).
-
Walli schrieb:
otze schrieb:
nirsaja schrieb:
Außerdem solltest du statt
<< "\n";<< endl;verwenden

genau umgekehrt!
Ne, man nimmt das, was Sinn macht. Wenn der Buffer geflusht werden soll endl und wenn man nur nen Zeilenumbruch braucht \n.
mir fällt nur grad eine sache ein, bei der ein endl nützlich wär: bei exceptions. sonst brauchst du quasi nie endl.
-
Freak schrieb:
int matrix(rows, columns);
Das ist kein zweidimensionales Array. Zeig doch mal den relevanten, echten Code.
-
Freak schrieb:
The_Matrix::The_Matrix(int rows, int columns) { int matrix[rows][columns]; //blabla hier kommt der andere krams. rows, columns = 2 }Das geht auch nicht. rows und columns sind zur Compilezeit keine Konstanten. Du musst die Matrix dynamisch erzeugen (-> FAQ).
-
Ok, alles mal hier:
#include <iostream> #include <string> using namespace std; class Matrix { public: Matrix(int rows, int columns); ~Matrix(); protected: }; Matrix::Matrix(int rows, int columns) { cout << "Im Matrix-Konstruktor.\n"; int matrix[rows][columns]; matrix[0][0]=1; matrix[1][0]=3; matrix[0][1]=2; matrix[1][1]=4; cout << "Das ist matrix[0][0]: " << matrix[0][0] << "\n"; cout << "Das ist matrix[0][1]: " << matrix[0][1] << "\n"; cout << "Das ist matrix[1][0]: " << matrix[1][0] << "\n"; cout << "Das ist matrix[1][1]: " << matrix[1][1] << "\n"; } Matrix::~Matrix(){} int main() { cout << "Welcome, to the real World!\n"; Matrix myMatrix(2,2); return 0; }
-
Freak schrieb:
class Matrix { public: Matrix(int rows, int columns); // nimm hier size_t - du hast hier nur positive werte // tipp: suche nach dem ritter des size_t ^^ ~Matrix(); protected: }; // ... int matrix[rows][columns];das ist nicht erlaubt. manche compiler (u.a. gcc) erlauben es als extension.
versuche es entweder mal mit:
- int**
- std::vector< std::vector<int> >
- einem 2dVector (z.b. aus boost)imo am besten in der reihenfolge. vielleicht ist das einfach nur undefiniertes verhalten.
mfg
-
Danke für die Antwort!
Da ich gerade am lernen bin checke ich noch nicht so ganz, WAS ich genau falsch gemacht habe. Ist aber kein Problem, weil ich ja noch am lernen bin.
Werde in einer späteren Lernphase auf diese Antwort zurückgreifen.Irre, dass es ein "echter" Fehler ist und nicht irgendeine Verpeiltheit von mir :).
P.S. Compiliere mit dem g++ (GCC) 3.3.5-20050130