Hallo Klotzkopp,
ersteinmal vielen Dank für die Hilfe und besonders für die weiterführenden Tipps. Es funktioniert jetzt.
Zu zwei Dingen habe ich noch eine Frage / Anmerkung
using namespace std
Stimmt, im Headerfile ist das nicht geschickt, allerdings muss ich dann wenigstens "using std::ostream" angeben weil die Angabe von std::ostream in der Definition selbst wieder eine Fehlermeldung bringt. Initialisierungslisten
In dem einfachen Beispiel geht das, aber die eigentliche Klasse besitzt auch ein Array, ist es dann sinnvoll trotzdem die Basistypen in einer Initialisierungsliste anzugeben und nur das Array im Rumpf des Construktirs zu definieren? (Hier soll Platz für eine Matrix reserviert werden die a*b Elemente hat). nochmal cout
Wenn ich einen operator += definiere, dann gibt dieser void zurück, ist es prinzipiell auch möglich irgendwie
cout << A+=B
auszugeben, oder schreibt man das einfach in zwei Zeilen?
Viele Grüße
Armin
//----------
// myclass.h
//----------
#ifndef MYCLASS_H
#define MYCLASS_H
#include <fstream>
#include <iostream>
using std::ostream;
class MyClass
{
public:
MyClass(const MyClass &A);
MyClass(int a, int ;
~MyClass();
void swap(MyClass & other);
MyClass& operator= (const MyClass &A);
const MyClass operator+ (const MyClass &A) const;
friend ostream& operator<< (ostream &out, const MyClass &A);
private:
int a;
int b;
};
#endif // MYCLASS_H
[/code]
[code]
//----------
// myclass.cpp
//----------
#include "myclass.h"
using namespace std;
//---------------------------------------------------------------------------
MyClass::MyClass(const MyClass &A)
{
a = A.a;
b = A.b;
}
//---------------------------------------------------------------------------
MyClass::MyClass(int aa, int bb) : a(aa), b(bb)
{
}
//---------------------------------------------------------------------------
MyClass::~MyClass()
{
}
//---------------------------------------------------------------------------
ostream &operator<<(ostream &out, const MyClass &A)
{
cout << A.a << ", " << A.b << endl;
return out;
}
//---------------------------------------------------------------------------
void MyClass::swap(MyClass & other)
{
std::swap(a, other.a);
std::swap(b, other.;
}
//---------------------------------------------------------------------------
MyClass& MyClass::operator=(const MyClass &A)
{
if (this != &A)
{
MyClass Temp(A);
swap(Temp);
}
return *this;
}
//---------------------------------------------------------------------------
const MyClass MyClass::operator+(const MyClass& A) const
{
MyClass R(*this);
R.a += A.a;
R.b += A.b;
return R;
}