Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Klassenproblem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.11.2006, 23:17 Uhr
~Kevin
Gast


Hallo,
ich glaube langsam aber sicher das ich das mit den Klassen noch nicht so ganz verstanden habe...also hier erst mal der code

C++:
#include <iostream>
#include <stdafx.h>
#include <cstring>

using namespace std;

//Klasse definieren
class Anleger
{
    float Grammatur;
    float Volumen;
    float Faktor;
    float Dicke;
    float Fläche;
    float Höhe;
    float Breite;
    float Gewicht;
    int Seitenanzahl;
    int Papiereigenschaft;
    int Anlegereigenschaft;
    int Anlegergeschwindigkeit;

public:
    //float GrammaturFunc(float Dicke, float Volumen, float Gewicht, float Höhe, float Breite, float Faktor);
    //float VolumenFunc(float Dicke, float Gewicht, float Grammatur, float Höhe, float Breite, float Faktor);
    //float Faktor(float Dicke, float Volumen, float Grammatur, float Höhe, float Briete, float Gewicht);
    //float Fläche(float Papierhöhe, float Papierbreite, float Gewicht, float Grammatur);
    //float Höhe(float Breite, float Fläche, float Gewicht, float Grammatur);
    //float Breite(float Höhe, float Fläche, float Gewicht, float Grammatur);
    //float Gewicht(float Fläche, float Grammatur, float Breite, float Höhe);
    //int Seitenanzahl(float Grammatur, float Gewicht, float Fläche, float Breite, float Höhe, float Dicke, float Volumen);
    void Initialisieren(float iGrammatur, float iVolumen, float iFaktor, float iDicke, float iFläche, float iHöhe, float iBreite, float iGewicht, int iSeitenanzahl, int iPapiereigenschaft, int iAnlegereigenschaft, int iAnlegergeschwindigkeit)
    {
        Grammatur = iGrammatur;
        Volumen =  iVolumen;
        Faktor = iFaktor;
        Dicke =    iDicke;
        Fläche = iFläche;
        Höhe = iHöhe;
        Breite = iBreite;
        Gewicht =  iGewicht;
        Seitenanzahl = iSeitenanzahl;
        Papiereigenschaft = iPapiereigenschaft;
        Anlegereigenschaft = iAnlegereigenschaft;
        Anlegergeschwindigkeit = iAnlegergeschwindigkeit;
    }
    void DickeFunk(float Grammatur, float Volumen, int Faktor)
    {
        float Dicke = (Grammatur * Volumen) / Faktor;
        printf(" %d ", Dicke);
    }

};

void main()
{
    Anleger Bogen1;
    printf("Es werden folgende Parameter an den Bogen 1übergeben:");
    printf("void Initialisieren(float iGrammatur, float iVolumen, float iFaktor, float iDicke, float iFläche, float iHöhe, float iBreite, float iGewicht, int iSeitenanzahl, int iPapiereigenschaft, float iAnlegereigenschaft, float iAnlegergeschwindigkeit)");
    Bogen1.Initialisieren(120,2,1000,0.24,1520,29.7,21,35,4,5,5,2);
    printf("Der Bogen1 wurde erfolgreich erstellt!");
    Bogen1.DickeFunk(120,2,1000);
}


so jetzt mein Problem..also das erstellen der klasse geht ja noch.Ich initialisiere einfach meine klasse mit ein paar werten aber wie kann ich dann einfach die DickeFunK aufrufen und mir das ergebnis ausgeben lassen..der compiler meldet mir dann wenn ich keine argumente übergebe das die selben dann fehlen..aber das verstehe ich doch nicht..ich habe jja schon bei initialisieren die werte übergeben wieso kann ich dann nicht in der methode die werte benutzen??und bei dem beispiel jetzt oben hab ich mal einfach die dickefunk mit argumenten aufgerufen und da kiommt ein absolut flasche ergebnis raus..wer kann helfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.11.2006, 14:37 Uhr
mischa
Fragender


1. wenn du klassen benutztst arbeitest du mit c++ also benutzt auch cout und cin und nicht printf denn das ist c.
2. zum initialisieren benutz lieber einen konstruktor
3.main hat immer int als rückgabe wert
4.Die DickeFunk siet bei dir so aus

C++:
DickeFunk(float Grammatur, float Volumen, int Faktor)


dann must du auch an die DickeFunk drei floats übergeben
wenn du die durch die initialisierung übergebenen werte benutzen willst dan ruf sie in der funk doch einfach mit dem namen auf ohne was zu übergeben z.B.

C++:
void gib_Breite()
{
     cout<<Breite<<endl;
}


du hast sie doch als Member in der klasse drin, musst nichts übergeben
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.

Dieser Post wurde am 23.11.2006 um 14:38 Uhr von mischa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.11.2006, 22:15 Uhr
~Kevin
Gast


Jo du hast recht...ichh hab mich da ein bisschen vertan..habs aber jetzt versucht anders zu lösen und zwar habe ich eine hearder dafür angelegt...sieht dann so aus:

C++:
// AnlegerKlasse.h

#pragma once

using namespace System;

namespace AnlegerKlasse {

    public ref class Class1
    {
        float Grammatur;
        float Volumen;
        float Faktor;
        float Dicke;
        float Höhe;
        float Breite;
        float Gewicht;
        int Seiten;
        int Papiereigenschaften;
        int Anlegereigenschaften;
        int Anlegergeschwindigkeit;

    public:
        //Deklaration des Konstruktors
        Class1(float iGrammatur = 0, float iVolumen = 0, float iFaktor = 1000, float iDicke = 0, float iHöhe = 0, float iBreite = 0, float iGewicht = 0,
               int iSeiten = 0, int iPapiereigenschaft = 0, int iAnlegereigenschaft = 0, int iAnlegergeschwindigkeit = 0)
        {
            Grammatur = iGrammatur;
            Volumen = iVolumen;
            Faktor = iFaktor;
            Dicke = iDicke;
            Höhe = iHöhe;
            Breite = iBreite;
            Gewicht = iGewicht;
            Seiten = iSeiten;
            Papiereigenschaft = iPapiereigenschaft;
            Anlegereigenschaft = iAnlegereigenschaft;
            Anlegergeschwindigkeit = iAnlegergeschwindigkeit;
    }

        //Deklaration des Destruktors
        ~Class1();

        //Deklaration der Anlegermethoden
        float GrammaturFunc(Volumen, Faktor, Dicke, Gewicht, Breite, Höhe)
        {
            if(Volumen != 0 && Faktor != 0 && Dicke != 0)
            {
                Grammatur = (Dicke * Faktor) / Volumen;
                return Grammatur;
            }
            else if(Höhe != 0 && Breite != 0 && Gewicht != 0)
            {
                Grammatur = Gewicht * (10000 / (Höhe * Breite));
                return Grammatur;
            }
            else if()
            {
                cout<<"Es sind zu wenig Werte gegeben um die Grammatur berechnen zu können!";
            }
        }
}

jettz kommt problem nummer 2...also soweit ich das mal irgendwo gelesen habe ist es nicht möglich die attribute einer klasse mal eben so zu deklarieren..also habe ich das mal einfach mit dem konstruktor gemacht....doch darauf hin kommt die meldung:
cdokumente und einstellungen\second sun\eigene dateien\visual studio 2005\projects\c++\anlegerklasse\anlegerklasse\AnlegerKlasse.h(25) : error C3222: "iHöhe": Für Memberfunktionen eines verwalteten Typs oder generische Funktionen können keine Standardargumente deklariert werden.
naja und diese meldung kommt so zu jeder variable die bei konstruktor übergben wird...wieso??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.11.2006, 22:38 Uhr
~Kevin
Gast


Das gibts doch nicht...also ich hab jetzt mal einfach den Konstruktor überladen und es funktioniert auch alles soweit nur bei linken geibts ein problem:-( so siehts aus:


C++:
C:\Dokumente und Einstellungen\Second Sun\Eigene Dateien\Visual Studio 2005\Projects\C++\AnlegerKlasse\Release\AnlegerKlasse.dll : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.


und so der Code

C++:
// AnlegerKlasse.h

#pragma once

using namespace System;

namespace AnlegerKlasse {

    public ref class Class1
    {
        float Grammatur;
        float Volumen;
        float Faktor;
        float Dicke;
        float Höhe;
        float Breite;
        float Gewicht;
        int Seiten;
        int Papiereigenschaften;
        int Anlegereigenschaften;
        int Anlegergeschwindigkeit;

    public:
        //Deklaration des Konstruktors (überladen)
        Class1()
        {
            Grammatur = 0;
            Volumen = 0;
            Faktor = 1000;
            Dicke = 0;
            Höhe = 0;
            Breite = 0;
            Gewicht = 0;
            Seiten = 0;
            Papiereigenschaften = 0;
            Anlegereigenschaften = 0;
            Anlegergeschwindigkeit = 0;
        };
        Class1(float iGrammatur, float iVolumen, float iFaktor, float iDicke, float iHöhe, float iBreite, float iGewicht, int iSeiten, int iPapiereigenschaften, int iAnlegereigenschaften, int iAnlegergeschwindigkeit)
        {
            Grammatur = iGrammatur;
            Volumen = iVolumen;
            Faktor = iFaktor;
            Dicke = iDicke;
            Höhe = iHöhe;
            Breite = iBreite;
            Gewicht = iGewicht;
            Seiten = iSeiten;
            Papiereigenschaften = iPapiereigenschaften;
            Anlegereigenschaften = iAnlegereigenschaften;
            Anlegergeschwindigkeit = iAnlegergeschwindigkeit;
    }

        //Deklaration des Destruktors
        ~Class1();

        //Deklaration der Anlegermethoden
        float GrammaturFunc()
        {
            if(Volumen != 0 && Faktor != 0 && Dicke != 0)
            {
                Grammatur = (Dicke * Faktor) / Volumen;
                return Grammatur;
            }
            else if(Höhe != 0 && Breite != 0 && Gewicht != 0)
            {
                Grammatur = Gewicht * (10000 / (Höhe * Breite));
                return Grammatur;
            }
            /*else if
            {
                //cout<<"Es sind zu wenig Werte gegeben um die Grammatur berechnen zu können!";
            }*/

        };
    };
}



wer weiß woran es liegt??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: