【发布时间】:2021-09-22 16:22:01
【问题描述】:
我是 C++ 新手,对如何处理这个问题非常困惑。在 Javascript 中,我可以做这样的事情来非常轻松地动态访问对象:
function someItem(prop) {
const item = {
prop1: 'hey',
prop2: 'hello'
};
return item[prop];
}
在 C++ 中,我假设我必须使用 Struct,但在那之后,我陷入了如何动态访问 struct 成员变量的问题。
void SomeItem(Property Prop)
{
struct Item
{
Proper Prop1;
Proper Prop2;
};
// Item[Prop] ??
}
这可能是糟糕的代码,但我对如何处理这个问题感到非常困惑。
【问题讨论】:
-
Javascript 中的对象更类似于 C++ 中的
std::unordered_map<std::string, sta::any>,而不是实际的 C++ 对象。 -
对于您的结构,您声明了一个类型。您没有实例,因此无法访问非静态成员变量。
-
建议替代方案有点困难,因为我认为我们需要更多上下文。
-
旁注:几乎任何东西的动态访问都是有代价的。 C++ 就是要尽可能降低成本。为了确保您接受或至少理解您所做的事情对性能有影响,您通常必须提出要求,这通常意味着您自己编写。
-
我的用例非常简单,但是,这非常有用。谢谢大家