Nicht aufgelöstes externes Symbol



  • Hallo, ich bin neu und verstehe noch nicht so viel!

    Ich habe eine Klasse namens "Person":

    Header:

    #pragma once
    #include "stdafx.h"
    #include <string>
    
    using namespace std;
    
    class Person
    {
    	static string NAME;
    public:
    	static void setName(string NAME);
    	static string getName();
    };
    

    Klasse:

    #include "stdafx.h"
    #include "Person.h"
    #include <string>
    
    using namespace std;
    
    void Person::setName(string NAME)
    {
    	Person::NAME = NAME;
    }
    
    string Person::getName() 
    {
    	return Person::NAME;
    }
    

    und meinen Code:

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    
    #include "Person.h"
    
    using namespace std;
    
    void out(string STRING);
    
    int main() 
    {
    	Person::setName("Peter");
    	out(Person::getName());
    
    	system("PAUSE");
    	return 0;
    }
    
    void out(string STRING) {
    	cout << STRING << endl;
    }
    

    Ich wollte das ganze statisch haben, also keine Instans erzeugen... (Tests usw.)

    Wieso kommt bei mir immer eine Fehlermeldung?
    Was habe ich vergessen, was muss ich machen?

    Vielen Dank 🙂



  • Du hast vergessen, die Fehlermeldung zu posten.



  • Meine Glaskugel sagt, dass du in der .cpp die Definition der statischen Variablen vergessen hast.

    // In Person.cpp
    
    std::string Person::NAME = "";
    


  • Deine Glaskugel liegt richtig^^

    Vielen Dank 🙂



  • Ich verstehe den Sinn der Klasse nicht. Ich habe eher das Gefühl, dass Du hier static falsch benutzt.

    Außerdem hat ein using namespace auf globaler Ebene nichts in einem Header zu suchen. So etwas sollte höchstens in einer cpp-Datei stehen.


Log in to reply