Improper use of typedef und Function call missing
Von: , Frage gestellt am Di, 10. Apr 2007
Hallo,
ich möchte bei der Implementierung einer Methode vom cpp-file aus auf die Ergebnisse von anderen, ebenfalls dort implementierten Methoden zugreifen. Dazu muß ich, wenn ich nicht irre, ein Objekt meiner Klasse als Parameter bypassen und diesen Bypass sowohl im .h-File als auch im Main deklarieren, nicht? Trotzdem klappt es nicht:
// "TVector2.h":
class TVector2 {
float *vec;
int cantcomp;
public:
TVector2(int n=0);
~TVector2();
TVector2(const TVector2 &);
void Leer();
float MediaGeo();
float CompMay();
float CompMen();
float Rango(TVector2 a);
};
// TVector2.cpp :
//---------------------------------------------------------------------------
#pragma hdrstop
#include "TVector2.h"
#include <iostream.h>
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
TVector2::TVector2(int n){ // Constructor
cantcomp = n;
vec = new float[cantcomp];
for (int i=0; i<cantcomp; i++)
vec[i] = 0;
}
TVector2::~TVector2(){ // Destructor
delete[]vec;
}
TVector2::TVector2(const TVector2 & a){ // Constr. Copia
cantcomp = a.cantcomp;
vec = new float[cantcomp];
for(int i=0; i<cantcomp; i++)
vec[i] = a.vec[i];
}
void TVector2::Leer(){
for (int i=0; i<cantcomp; i++) {
cout << "Entre el " << i+1 << " componente del vector: ";
cin >> vec[i];
}
}
float TVector2::MediaGeo() {
float medg=1;
for (int i=0; i<cantcomp; i++)
medg = medg * vec[i];
medg = pow(medg, 1/cantcomp);
return medg;
}
float TVector2::CompMay(){
float maycomp=vec[0];
for (int i=0; i<cantcomp; i++)
if (maycomp < vec[i])
maycomp=vec[i];
return maycomp;
}
float TVector2::CompMen(){
float mencomp=vec[0];
for (int i=0; i<cantcomp; i++)
if (mencomp > vec[i])
mencomp=vec[i];
return mencomp;
}
float TVector2::Rango(TVector2 a){
float range=0;
range = (a.CompMay() - a.CompMen());
return range;
}
// Main.cpp :
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "TVector2.h"
#include <iostream.h>
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int cantcomp=0;
cout << "Cuantas componentes desea, que tenga el vector?: " << endl;
cin >> cantcomp;
TVector2 v(cantcomp);
cout<<"Componentes del vector: "<<endl;
v.Leer();
cout << "Media geometrica: " << v.MediaGeo() <<endl;
cout << "La componente de mayor valor es: " << v.CompMay() <<endl;
cout << "La componente de menor valor es: " << v.CompMen() <<endl;
cout << "El rango es: " << v.Rango(TVector2 a) <<endl;
system("pause"); return 0;
}
Borland C++ Builder v6 gibt bei der Methode "Rango" folgende Fehlermeldungen aus:
- Improper use of typedef 'TVector2'
- Function call missing
Woran hapert es hier? Ich krieg die Fehlermeldung nicht weg.
Gruß, Uwe
