Hallo,
ich habe ein Problem beim linken der folgenden 3 Dateien. Ich nehme an das es mit Mehrfahr-Inkludierung zu tun hat.
Hauptprogramm:
Alles anzeigen
Klasse Matrix:
Alles anzeigen
Klasse Vektor:
Alles anzeigen
PS: Wenn mir noch einer verraten könnte wie man mit der Verwendung von tamplates die Implementierung des Header (hier Matrix.h und Vektor.h) auch in eine .cpp schreiben kann, denn ich habe jetzt nur den Weg gefunden die Implementierung in die Header-Datei zu schreiben -> finde ich jetzt nicht so schön
Ich verwende Ms-Visual Studio</T></class></T></T></class></T></class></T></class></T></class></T></n;></T></T></class></T></T></T></class></class></iostream>
ich habe ein Problem beim linken der folgenden 3 Dateien. Ich nehme an das es mit Mehrfahr-Inkludierung zu tun hat.
Hauptprogramm:
Quellcode
- // Uebung5.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
- #include
- #include "Vektor.h"
- #include "Matrix.h"
- void init(Matrix *m){
- int arr[] = {1,2,3,4,5};
- Vektor *v = new Vektor(arr,5);
- for(int x=0; x < m->num_rows(); x++){
- for(int y=0; y < m->num_cols(); y++){
- ((*m)[x])[y] = v;
- }
- }
- }
- void print(Matrix *m){
- std::cout << *m;
- }
- int main(void){
- std::cout << "Hallo" << std::endl;
- Matrix *m = new Matrix(2,3);
- init(m);
- return 0;
- }
Klasse Matrix:
Quellcode
- #ifndef FIBS_S
- #define FIBS_S
- #include
- templateclass Vektor;
- template
- class Matrix {
- public:
- Matrix(int n, int m); // Konstruktor für n x m Elemente
- ~Matrix(); // Destruktor
- int num_rows() const; // Anzahl Zeilen
- int num_cols() const; // Anzahl Spalten
- Vektor* operator[](int i);
- friend std::ostream& operator<<(std::ostream& out, const Matrix& m);
- private:
- Vektor** p; // Array von Zeigern auf Objekte Vektor
- int rows;
- int columns;
- };
- template
- Matrix::Matrix(int n, int m){
- this->p = new Vektor*[n];
- for(int i=0; ip[i] = new Vektor(m);
- }
- this->rows = n;
- this->columns = m;
- };
- // Destruktor
- template
- Matrix::~Matrix(){
- delete [] p;
- } ;
- // Anzahl Zeilen
- template
- int Matrix::num_rows() const{
- return this->rows;
- };
- template
- int Matrix::num_cols() const{
- return this->columns;
- };
- template
- Vektor* Matrix::operator[](int i){
- //assert (i >= 0 && i < size );
- return p[i];
- };
- template
- std::ostream& operator<<(std::ostream& out, const Matrix& m){
- for(int x=0; x< m.num_rows(); x++){
- out << m[x];
- }
- out << endl;
- return out;
- };
- #endif
Klasse Vektor:
Quellcode
- #ifndef FIBS_W
- #define FIBS_W
- #include
- template
- class Vektor {
- public:
- explicit Vektor(int n); // Konstruktor für n Elemente
- Vektor(const Vektor& v); // copy Vector
- Vektor(const T a[], int n); // copy an array
- ~Vektor(); // Destruktor
- T& element(int i); // Zugriff auf i-tes Element
- int num_elem() const; // Anzahl Elemente
- T& operator[](int i);
- Vektor& operator=(const Vektor* v);
- friend std::ostream& operator<<(std::ostream& out, const Vektor& v);
- private:
- T* p;
- int size;
- };
- template
- Vektor::Vektor(const T a[], int n)
- {
- //assert(n > 0);
- size = n;
- p = new T[size];
- for (int i = 0; i < size; ++i)
- {
- p[i] = a[i];
- }
- };
- template
- Vektor::Vektor(int n): size(n){
- //assert(n > 0);
- p = new T[size];
- };
- template
- Vektor::Vektor(const Vektor &v){
- p = new T[v.size];
- for(int i = 0; i < size; i++){
- p[i] = v.element(i);
- }
- }
- template
- Vektor::~Vektor(void){
- delete [] p;
- };
- template
- T& Vektor::element(int i){
- return this->p[i];
- };
- template
- int Vektor::num_elem() const{
- return this->size;
- };
- template
- T& Vektor::operator[](int i){
- //assert (i >= 0 && i < size );
- return (p[i]);
- };
- template
- Vektor& Vektor::operator=(const Vektor* v)
- {
- //assert(v.size == size);
- for (int i = 0; i < size; ++i) {
- p[i] = v->p[i];
- }
- return *this;
- };
- template
- std::ostream& operator<<(std::ostream& out, const Vektor& v){
- for(int x=0; x< v.size; x++){
- out << v[x];
- }
- out << std::
- endl;
- return out;
- };
- #endif
PS: Wenn mir noch einer verraten könnte wie man mit der Verwendung von tamplates die Implementierung des Header (hier Matrix.h und Vektor.h) auch in eine .cpp schreiben kann, denn ich habe jetzt nur den Weg gefunden die Implementierung in die Header-Datei zu schreiben -> finde ich jetzt nicht so schön
Ich verwende Ms-Visual Studio</T></class></T></T></class></T></class></T></class></T></class></T></n;></T></T></class></T></T></T></class></class></iostream>