Konstruktor mit eindimensionalen Array initalisieren
-
Hi
Kann man einen Konstruktor in dieser Art intialisieren ?
class matrix { std::valarray<double> v; public: matrix(double a[8]) { std::valarray<double> h for (int i=0;i<=9;i++) h[i]=a[i]; v=h; } };
Dann in der Main Funktion:
matrix m(1,2,3,4,5,6,7,8,9);
Das ist die Fehlermeldung :
[C++ Fehler] Unit1.cpp(27): E2285 Keine Übereinstimmung für 'matrix::matrix(double)' gefunden
MfG
Fleedo
-
Ein Array, das du übergibst, wird intern einfach nur als ein einziger Zeiger behandelt, klar, dass du dann keine 8 Argumente übergeben kannst.
Verwende doch einfach einen std::vector<double>.
ChrisM
-
Ja, wie wäre es denn mit std::vector:
#include <iostream> #include <vector> class matrix { private: int m_length; std::vector<double> m_vector; protected: public: matrix(int len, double* d) { m_length = len; for(int i=0; i<len; ++i) { m_vector.push_back(d[i]); } }; ~matrix() { }; matrix(const matrix& m) { this->m_vector = m.m_vector; this->m_length = m.m_length; }; void show(std::ostream& out) { std::vector<double>::iterator iter; for(iter = m_vector.begin(); iter < m_vector.end(); ++iter) { out << *iter << std::endl; } }; }; int main() { double d[] = {1,2,3,4,5,6,7,8}; matrix ma = matrix( 8, d ); matrix mb = matrix( ma ); mb.show( std::cout ); return 0; }
-
HI
Danke euch beiden. Ich probiers so !!!
C U
Fleedo