定义了一个结构,并初始化了实例。
struct details{
int numb;
string name;
string address;
};
details det={2,"abc","def"};
现在在通用实现中,我们知道结构类型(details
)和成员名称(比如name
)。仅为该结构定义了一个实例。我的问题是,我们可以在不使用实例name
的情况下获得"abc"
的值,即det
吗?
答案 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;