flopower1996
Lt. Junior Grade
- Registriert
- Aug. 2014
- Beiträge
- 401
Hey an alle,
ich habe ein Problem. Ich möchte meine eigenen dynamischen Vektoren machen und will dazu den << Operator überladen. Bei dynamischen Zeichenketten, hat das problemlos geklappt. Aber hier gestaltet es sich wirklich schwierig. Ich kopiere euch mal den Quelltext rein. Interessant wird es bei operator const char *(). Ich hoffe Ihr könnt mir bei der korrekten Überladung helfen. Nachher soll es mit cout << vektor; funktionieren...
Vektor.h
Vektor.cpp
LG Flo
ich habe ein Problem. Ich möchte meine eigenen dynamischen Vektoren machen und will dazu den << Operator überladen. Bei dynamischen Zeichenketten, hat das problemlos geklappt. Aber hier gestaltet es sich wirklich schwierig. Ich kopiere euch mal den Quelltext rein. Interessant wird es bei operator const char *(). Ich hoffe Ihr könnt mir bei der korrekten Überladung helfen. Nachher soll es mit cout << vektor; funktionieren...
Vektor.h
Code:
#include <iostream>
#include <string>
using namespace std;
class Vektor
{
private:
double* vektor;
int anz;
public:
Vektor(double* vektor, int anz);
void operator= (Vektor& vektor1);
friend Vektor operator+ (Vektor& vektor1, Vektor& vektor2);
friend Vektor operator* (Vektor& vektor1, Vektor& vektor2);
Vektor(Vektor& ini);
//operator const char *();
void ausgabe();
};
class VektorFehler : exception
{
public:
VektorFehler() : exception("Die Gr\224sse der Vektoren m\201ssen identisch sein."){};
};
Vektor operator+ (Vektor& vektor1, Vektor& vektor2);
Vektor operator* (Vektor& vektor1, Vektor& vektor2);
Vektor.cpp
Code:
#include "Vektor.h"
Vektor::Vektor(double* vektor, int anz)
{
this->anz = anz;
this->vektor = new double[anz];
}
void Vektor::operator= (Vektor& vektor1)
{
int i;
for(i=0;i<anz;i++)
this->vektor[i] = vektor1.vektor[i];
}
Vektor::Vektor(Vektor& ini)
{
anz = ini.anz;
vektor = new double[anz];
for (int i=0;i<anz;i++)
vektor[i] = ini.vektor[i];
}
Vektor operator+ (Vektor& vektor1, Vektor& vektor2)
{
if(vektor1.anz != vektor2.anz)
throw new VektorFehler();
int speicher, speicher1;
double* vek;
speicher = vektor1.anz;
speicher1 = vektor1.anz+vektor2.anz;
vek = new double[vektor1.anz];
for(int i=0;i<vektor1.anz;i++)
vek[i] = vektor1.vektor[i]+vektor2.vektor[i];
return Vektor(vek, vektor1.anz);
}
Vektor operator* (Vektor& vektor1, Vektor& vektor2)
{
if(vektor1.anz != vektor2.anz)
throw new VektorFehler();
int speicher, speicher1;
double* vek;
speicher = vektor1.anz;
speicher1 = vektor1.anz+vektor2.anz;
vek = new double[speicher1];
for(int i=0;i<speicher1;i++)
vek[i] = vektor1.vektor[i]*vektor2.vektor[i+speicher];
return Vektor(vek, speicher1);
}
/*Vektor::operator const char *()
{
string vek;
char vek2[1000];
for (int i = 0;i<anz;i++)
itoa(vektor[i],vek2[i],10);
return vek.c_str();
}*/
void Vektor::ausgabe()
{
for(int i = 0;i<anz;i++)
cout << vektor[i];
}
LG Flo
Zuletzt bearbeitet: