从知道其结构类型的实例中获取值

时间:2018-03-07 11:42:29

标签: c++ struct

定义了一个结构,并初始化了实例。

struct details{
    int numb;
    string name;
    string address;
    };

details det={2,"abc","def"};

现在在通用实现中,我们知道结构类型(details)和成员名称(比如name)。仅为该结构定义了一个实例。我的问题是,我们可以在不使用实例name的情况下获得"abc"的值,即det吗?

2 个答案:

答案 0 :(得分:3)

没有

该语言不知道您只有一个details实例,如果您告诉它只是类型,它肯定不知道在哪里找到它。没有可以咨询的实例“数据库”。

听起来你应该将这些数据放入命名空间,而不是:

namespace details {
    int numb       = 2;
    string name    = "abc";
    string address = "def";
}

// Refer to details::name practically anywhere

现在您已经有效地创建了一个信息“数据库”,其中包含名为name的字符串。

答案 1 :(得分:0)

您可以通过存储指向实例的全局指针。 但是,使用全局变量存在缺点。如果可能的话,你应该避免使用它。

struct details{
    int numb;
    string name;
    string address;

    static details* instance;
};

details* details::instance = nullptr;

details det={2,"abc","def"};
details::instance = &det;