【发布时间】:2022-01-23 10:53:49
【问题描述】:
auto list::at(int index)
{
for (auto node : VECTOR_OF_INT)
if (node.getIndex() == index)
return node.getValue();
for (auto node : VECTOR_OF_DOUBLE)
if (node.getIndex() == index)
return node.getValue();
for (auto node : VECTOR_OF_STRING)
if (node.getIndex() == index)
return node.getValue();
}
这是为了让我的列表类找到索引,我想返回一个 int、double 或 string,但我不知道如何帮助。
【问题讨论】:
-
您可能正在寻找
std::any。 -
首先,函数并非在所有情况下都返回值。希望您会看到并解决编译警告,否则它是未定义的行为。您可以使用std::any 或std::variant。
-
@zdf std::any 非常重。我会用一个全面的 std::variant 代替它,这很便宜。
-
我没有太多信息,但我猜这是一个设计问题。这里唯一有意义的方法是使用模板。函数的返回类型是固定的。
auto在这里无济于事,除非你真的使用模板。 -
我怀疑我们正在查看meta.stackexchange.com/questions/66377/what-is-the-xy-problem,所以请退后一步,用您所询问的步骤解释您想要解决的问题。
标签: c++