Seite 1 von 1
struct als rückgabewert
Verfasst: 15. Februar 2010 22:08
von mkind
hiho,
ich habe ein struct in der header deklariert
und möchte gern, dass eine funktion einen rückgabetype vom type vertex hat
die funktion sieht so aus:
Code: Alles auswählen
vertex calc(const int& angle, const vertex& origin){... rückgabe vom type vertex};
was er mir nun sagt:
'vertex' does not name a type
da ich noch c++ anfänger bin, ist mein latein hier leider am ende

Verfasst: 16. Februar 2010 00:39
von honda71
Hier mal mein Testprogramm:
Alles funktioniert:
Code: Alles auswählen
#include <QtCore/QCoreApplication>
struct vertex {
double x;
double y;
};
// Test als KLASSE -------------------------------------------------------------------------------------
class VERTEX
{
public:
VERTEX();
vertex calc(const int& angle,const vertex& origin);
};
VERTEX::VERTEX()
{
}
vertex VERTEX::calc(const int& angle,const vertex& origin)
{
return origin;
}
// Test als Funktion ------------------------------------------------------------------------------------
vertex calc(const int& angle,const vertex& origin) {
return origin;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}
Was könnte Dein Fehler sein....
Ich stelle mal eine Vermutung an:
Du hast struct vertex im Header Deiner Klasse definiert...
Und Deine Definition der Methode calc stammt aus der CPP-Datei.
Und Du hast vor dem calc Deine KLASSE:: vergessen...
Dann würde er vertex nämlich nicht kennen, da er bei der Definition keinen Bezug zum Header herstellen kann...
Wäre so ein typischer Fehler...
Also:
vertex
KLASSENAME::calc(const int& angle, const vertex& origin){... rückgabe vom type vertex};
Grüsse
Verfasst: 16. Februar 2010 03:34
von kater
Und ohne Klassen gehts auch
Code: Alles auswählen
struct vertex{
double x;
double y;
};
vertex calc(const int& angle, const vertex& origin) {
return origin;
}
int main()
{
return 0;
}
Verfasst: 16. Februar 2010 07:28
von mkind
hiho, danke danke.
den klassennamen hab ich schon darstehen

und die funktion wird auch ordnungsgemäß gefunden.
vertex hab ich allerdings im header deklariert. ich hab's innerhalb und außerhalb der klasse probiert.
Verfasst: 16. Februar 2010 07:45
von archer
Wenn du die Struktur im Header innerhalb der Klasse definiert hast, musst du den KlassennAmen vor vertex und calc setzen.
Code: Alles auswählen
CMyClass::vertex CMyClass::calc(const int& angle, const vertex& origin)
{
... rückgabe vom type vertex
}
Verfasst: 16. Februar 2010 07:45
von mkind
ah - ok. der trick war, es nicht in der klasse zu deklarieren. aber schon in der headerfile. dachte.