Klassenelement: array vom typ char* - Memberfunktion falsch???
-
Hallo,
Ich hab ein Problem beim Kompilieren einer Klasse:class SensorData
{
private:
static int marker;
char name [64];
int valuepos [16];
char* valuecor [16];
int posquant;public:
static int getmarker (void) {return marker;};
SensorData();
~SensorData();
void setthem(const char* pname, int* pvaluepos,char** pvaluecor, int pposquant );
const char* getname (void) const {return name ;};
const int* getpositions (void) const {return valuepos ;};
const char** getcor (void) const {return valuecor ;};
const int getposquant (void) const {return posquant ;};
};error C2440: 'return': 'char *const [16]' kann nicht in 'const char **' konvertiert werden
Kann mir jemand auf die Sprünge helfen?
-
------------------
-
vergiss es
-
const char** getcor (void) const {return valuecor ;};1. sieht unschön aus sonst hätte ich mich jetzt nicht verguckt

2. das void ist normalerweise bei C++ nicht nötig
3. Kann mir mal jemand helfen, das const da in der Mitte, sowas hab ich noch nie gesehenEDIT: Schon etwas vorangeschrittene Zeit...
-
Tim06TR schrieb:
const char** getcor (void) const {return valuecor ;};1. sieht unschön aus sonst hätte ich mich jetzt nicht verguckt

2. das void ist normalerweise bei C++ nicht nötig
3. Kann mir mal jemand helfen, das const da in der Mitte, sowas hab ich noch nie gesehenEDIT: Schon etwas vorangeschrittene Zeit...
ich muss dazusagen, dass ich vor 6 jahren ein ähnliches programm geschrieben hab, aus dem ich viel übernommen hab. aber nicht mit arrays (ausser char* name) und es hat damals funktioniert. es müsste also am typ array von arrays liegen. leider musste ich mich erst wieder einarbeiten, denke aber das const müsste so möglich sein.
-
Zilla schrieb:
Tim06TR schrieb:
const char** getcor (void) const {return valuecor ;};Hier geht const-Qualifikation verloren. Entweder
const char** getcor() { return valuecor; } // oder const char* const* getcor() const { return valuecor; }
-
Tim06TR schrieb:
3. Kann mir mal jemand helfen, das const da in der Mitte, sowas hab ich noch nie gesehen
Na setzt das doch mal ordentlich:
const char** getcor() const { return valuecor; }Die Methode ist const, d.h. es wird nichts in der Methode gesetzt oder verändert.
Das void in der Parameterliste ist wirklich nicht von nöten und wird eigentlich nie gesehen. Das Semikolon hinter jeder Methode brauchst du auch nicht zu machen.
Dann frage ich mich, wieso du char benutzt, wenn es doch den tollen Container std::string gibt.
Willst du wissen wie gut deine Klasse aussehen kann?class SensorData { private: static int marker; char name [64]; int valuepos [16]; char* valuecor [16]; int posquant; public: static int getmarker() { return marker; } SensorData(); ~SensorData(); void setthem(const char* pname, int* pvaluepos, char** pvaluecor, int pposquant); const char* getname() const { return name; } const int* getpositions() const { return valuepos; } const char* const* getcor() const { return valuecor; } const int getposquant() const { return posquant; } };Das geht noch ein Tick schöner und so lässt es sich auch kompilieren, aber trotzdem arbeitest du hier mit C++, also nutze die Macht.
class SensorData { private: static int marker; std::string name; int valuepos; std::string valuecor; int posquant; public: int getmarker() const { return marker; } SensorData(); ~SensorData(); void setthem(std::string pname, int pvaluepos, std::string pvaluecor, int pposquant) { this->name = pname; this->valuepos = pvaluepos; this->valuecor = pvaluecor; this->posquant = pposquant; } std::string getname() const { return name; } int getpositions() const { return valuepos; } std::string getcor() const { return valuecor; } int getposquant() const { return posquant; } };
-
die zweite version war erfolgreich
