Probelm beim Zugriff auf einen string Wert über Methode.



  • Fehler



  • Servus,

    lass mal bei der Definition das "VEREIN::" vor "std::string" weg dann sollte der Fehler weg sein.

    sollte dann so aussehen:

    std::string VEREIN::get_Vereinsname() {
        return Vereinsname;
    }
    

    Den Grund lässt du dir am besten von jemand anders erklären, bin nicht sonderlich gut in sowas. Wende dich da lieber an CStoll der ist ganz gut unterwegs in C++ und hat immer schön präzise Antworten 🙂

    Gruß,
    Baracke



  • Sorry hat leider nicht funktioniert.
    Wie sieht es mit der Konstruktor initialisierung aus? Stimmt die?

    Fehler: [C++ Error] Verein.cpp(27): E2451 Undefined symbol 'Vereinsname'



  • 1. Schmeiss das using namespace aus dem Header raus! Der Horror schlecht hin. Sowas sollte man in einem Header meiden! ("using namespace" meine ich) Das zieht unerwartete Fehler nach sich.
    2. Schreibe nach Möglichkeit Namen nicht komplett groß. VEREIN ist hier gemeint. Warum? Weil die Komplettgroßschreibung Makros vorbehalten ist. Das kann zu unerwarteten Problemen führen. Nenne deine Klasse am besten einfach Verein.
    3. Bei Rückgabetypen schreibt man nur den genauen Typen hin. Also nicht VEREIN::std::string sondern nur std::string.
    4. Und was ist das im Ctor:

    VEREIN::VEREIN()
    {
    Vereinsname != ""; // Was soll das sein???
    }
    

    Muss so heißen:

    VEREIN::VEREIN() 
    {
    Vereinsname = "";
    }
    


  • #if !defined(CLUB_H__INCLUDED)
    #define CLUB_H__INCLUDED
    
    #if (_MSC_VER > 1000)
    	#pragma once
    #endif // _MSC_VER > 1000
    
    #include <string>
    
    class Club 
    {
    public:
    	Club(const std::string&, const std::string&);
    	~Club();
    
    private:
    	std::string		m_Name;
    	std::string		m_Location;
    
    public:
    	std::string		get_name() const { return m_Name; }
    	std::string		get_location() const { return m_Location; }
    
    public:
    	void			show() const	{ std::cout << m_Name << "\t" << m_Location << std::endl;	}
    };
    
    #endif // CLUB_H__INCLUDED
    

    Warum nimmst du eine extra Funktion anlegen? Ist ja unnötig ... übergebe einfach dem Konstruktor schon die richtigen Argumente und fertig 🙂 Getter sollten const sein ... so wie deine anzeigen-Funktion (hier show), da du ja nichts an den Werten der Klasse änderst!



  • Das geht doch so nicht. Muss doch die Klasse zuweisen.
    Außerdem muss ich einen Wert zurückegeben.

    [C++ Error] Verein.cpp(27): E2451 Undefined symbol 'Vereinsname'
    [C++ Warning] Verein.cpp(28): W8070 Function should return a value

    Dnake



  • ? Wenn du nen dynamischen Array nutzen würdest, könntest du das mit einem Konstruktor mit Argumenten machen und würdest nicht von vornherein Platz für 500 Objekte nehmen. Was passiert denn wenn die 500 Vereine überschritten werden?

    std::vector<Club> clubs;
    // ... club hinzufügen ...
    Club club("Deppenrunners 182", "Dortmund");
    clubs.push_back(clubs);
    

    ...



  • Hört sich ganz gut an, bin aber noch Anfänger und kenne mich mit der Dynamischen Programmierung noch nicht aus.



  • Musst du auch nicht, wie DEvil schon gezeigt hat uebernimmt das ein Container wie z.B std::vector fuer dich.

    Methoden vom Container kannst du auf www.cppreference.com nachschlagen.



  • Joa, bin wieder im Lande werde mir das mal anschauen

    Danke


Anmelden zum Antworten