Sichtbarkeit von Objekten



  • Hallo zusammen,
    ich bin derzeit noch C++ Anfänger und habe ein entsprechendes Anfängerproblem. Ich versuche ein Program zu schreiben, welches mir die Bahnen von Planeten zeichnet. Die Daten für die Planeten stecken in der Klasse Planeten. Die Deklarationen stehen in der Datei Planet.h und der Code dazu entsprechend in Planet.cpp, stimmt also alles soweit.

    Planet.h:

    #pragma once
    using namespace System;

    ref class Planet
    {
    String ^Name;
    double a;
    double b;
    double m;
    double v;

    public:
    Planet(String ^Name, double a, double b, double m, double v);

    double Bahn(double x);
    double Radius(double x);
    double Speed(double x);
    void Ausgabe();
    };

    Planet.cpp:

    #include "StdAfx.h"
    #include "Planet.h"

    Planet::Planet(String ^Name, double a, double b, double m, double v)
    {
    this->Name=Name;
    this->a=a;
    this->b=b;
    this->m=m;
    this->v=v;
    }

    double Planet::Bahn(double x)
    {
    double y;
    y=Math::Sqrt((1-((x*x)/b))*a);
    return y;
    }

    double Planet::Radius(double x)
    {
    double y,r;
    y=Bahn(x);
    r=Math::Sqrt(x*x+y*y);
    return r;
    }

    double Planet::Speed(double x)
    {
    double l,v;
    l=((a*b)/2)*mPlanet::v;
    v=l/(m
    Radius(x));
    return v;
    }

    void Planet::Ausgabe()
    {
    String ^Name;
    double a,b,m,v;
    Name=Planet::Name;
    a=Planet::a;
    b=Planet::b;
    m=Planet::m;
    v=Planet::v;
    }

    Wenn ich jetzt aber z.B. eine Timerfunktion einrichte, um die Planeten dann "laufen" zu lassen, deren Quellcode dann ja in der Datei Form1.h angelegt wird und ich da ein neues Objekt der Klasse Planet erzeugen will:

    private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
    {

    Planet ^Erde = gcnew Planet("Erde", 1.4745E11, 1.5255E11, 5.974E24, 29780);

    }

    krieg ich die Fehlermeldung, dass "Planet" nicht definiert wurde. Die gleiche Deklaration z.B. in der Datei Planet.ccp funktioniert aber. Es scheint als sei der Konstruktor für die "Planeten" in der Form1.h nicht sichbar. Kann mir jemand erklären wie ich das Problem umgehen bzw. beheben kann?

    Vielen Dank im vorraus,
    Ludwig



  • Falsches Forum: C++/CLI wäre korrekt.
    Dein Beitrag wird bestimmt bald verschoben.
    Simon



  • Mach #include "Planet.h" in Form1.h
    Simon



  • danke für die Antworten.
    Wo genau soll ich das #include "Planet.h" den hinschreiben? Wenn ich es ganz am Anfang bei den Namespace mit reinschreibe bekomme ich für jede Variable der Klasse eine neue Fehlermeldung "unresolved Token"



  • Zeig mal die exakten Fehlermeldungen (bei inkludiertem Header, ganz am Anfang, nach stdafx.h).
    Simon



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • vielen Dank an alle, das Problem ist jetzt gelöst. Man muss die Zeile '#include "Planet.h"' ganz am Anfang direkt nach '#pragma once' schreiben, dann funktionierts


Anmelden zum Antworten