ich bin dabei mir die Sprache C++ anzueignen und versuche nun ein kleines Programm zur Operator-Überladung zu schreiben. Doch leider komme ich nicht weiter.
Was ich bisher gemacht habe:
Die Klasse Bruch:
Code: Alles auswählen
// bruch.h
#include <iostream>
#ifndef _BRUCH_H_
#define _BRUCH_H_
using namespace std;
class Bruch {
private:
// Eigenschaften der Klasse Bruch
double zaehler;
double nenner;
public:
// Deklaration der Konstruktoren
Bruch( double, double );
Bruch();
Bruch operator*( Bruch b1, Bruch b2 );
// Fähigkeiten (Methoden) der Klasse Bruch
double value( void );
// Zugriffsmethoden zum Abfragen der Eigenschaften
double get_zaehler( void );
double get_nenner( void );
// Zugriffsmethoden zum Setzen der Eigenschaften
void set_zaehler( double z );
void set_nenner( double n );
// Ausgabe aller Eigenschaften
void print(void);
};
#endif
Code: Alles auswählen
// bruch.cpp
#include <iostream>
#include <cstring>
#include "bruch.h"
using namespace std;
// Definition der Konstruktoren - Anfang
Bruch::Bruch( double z, double n ) {
zaehler=z;
nenner=n;
}
// Der Standardkonstruktor
Bruch::Bruch() {
zaehler=0;
nenner=1;
}
Bruch operator*( Bruch b1, Bruch b2 ) {
Bruch tmp;
tmp.set_zaehler(b1.get_zaehler() * b2.get_zaehler());
tmp.set_nenner(b1.get_nenner() * b2.get_nenner());
return tmp;
}
// Zugriffsmethoden zum Abfragen der Eigenschaften
double Bruch::get_zaehler( void ) {
return zaehler;
}
double Bruch::get_nenner( void ) {
return nenner;
}
double Bruch::value( void ) {
return (zaehler/nenner);
}
// Zugriffsmethoden zum Setzen der Eigenschaften
void Bruch::set_zaehler( double z ) {
zaehler=z;
}
void Bruch::set_nenner( double n ) {
nenner=n;
}
Code: Alles auswählen
// main.cpp
#include "bruch.h"
int main(void) {
Bruch b1( 3, 5);
Bruch b2( 10, 2);
Bruch sum;
sum=operator*( b1, b2);
cout << "b1 " << b1.value() << "\n";
cout << "b2 " << b2.value() << "\n";
cout << sum.value() << "\n";
return 0;
}
Code: Alles auswählen
daniel@daniel-laptop:~/scripts/C++$ g++ -Wall -o Bruch bruch.cpp main_bruch.cpp
bruch.h:18: error: 'Bruch Bruch::operator*(Bruch, Bruch)' must take either zero or one argument
bruch.h:18: error: 'Bruch Bruch::operator*(Bruch, Bruch)' must take either zero or one argument
main_bruch.cpp: In function 'int main()':
main_bruch.cpp:8: error: 'operator*' not defined