struct als rückgabewert

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
mkind
Beiträge: 15
Registriert: 21. Dezember 2009 17:08

struct als rückgabewert

Beitrag 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 :(
honda71
Beiträge: 49
Registriert: 12. Juli 2006 16:16

Beitrag 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
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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;
}
mkind
Beiträge: 15
Registriert: 21. Dezember 2009 17:08

Beitrag 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.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag 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
}
mkind
Beiträge: 15
Registriert: 21. Dezember 2009 17:08

Beitrag von mkind »

ah - ok. der trick war, es nicht in der klasse zu deklarieren. aber schon in der headerfile. dachte.
Antworten