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

Code: Alles auswählen

struct vertex{
double x;
double y;
}
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.