c++ 创建类后如何定义类属性

fjaof16o  于 2022-11-27  发布在  其他
关注(0)|答案(3)|浏览(98)

我试图弄清楚如何定义一个变量,它是C++中的一个类的成员,在正常的类体之外。它可能在一个函数的内部,也可能在类的外部。这是可能的吗?我需要的是变量应该是类的一个成员,这样如果我调用Nodesecond.birthdate,它会返回生日。我试图理解这种语言,不涉及实际应用。
这是我的尝试:

#include <iostream>
using namespace std;

struct Nodesecond {
public:
    int Age;
    string Name;
    //  I dont want to define Birthdate here. It should be somewhere else. 

    Nodesecond() {
        this->Age = 5;
        this->Name = "baby";
        this->birthdate = "01.01.2020";
    }
};

int main() {
    std::cout << "Hello, World!" << std::endl;
    Nodesecond mynode;
    cout << mynode.Age << endl << mynode.Name << mynode.Birthdate;
    return 0;
}
0tdrvxhp

0tdrvxhp1#

这是不可能的,因为类必须在编译时完成。然而,在某些情况下,std::map〈Key,Value〉可以完成这项工作。

pobjuy32

pobjuy322#

创建类后如何定义类属性
你不能。类的所有东西,都需要在类的member-specification中指定/声明。
注意前面语句中对声明的的强调。我们必须首先在类内部声明所有内容,然后我们可以选择在类外部定义它。

guicsvcw

guicsvcw3#

您可以执行与JavaScript对象类似的操作。

#include <iostream>
#include <unordered_map>
using namespace std;

struct Nodesecond {
public:
    int Age;
    string Name;
    unordered_map<string, string> Fields;
    string& operator[](const string& name) {return Fields[name];}
    Nodesecond() {
        this->Age = 5;
        this->Name = "baby";
        *(this)["Birthdate"] = "01.01.2020";
    }
};

int main() {
    std::cout << "Hello, World!" << std::endl;
    Nodesecond mynode;
    cout << mynode.Age << endl << mynode.Name << mynode["Birthdate"];
    return 0;
}

相关问题