我可以访问一般传递给模板的结构吗?

时间:2014-05-20 16:24:25

标签: c++ templates struct

根据标题,这是我想要做的。基本上我希望从文件加载结构,但支持各种结构,所以我试图在模板中执行它。这是我第一次使用模板,真可以原谅我的无知!

我希望能够做到这样的事情:

template<class T> T ConfigLoader::LoadStructFromFile(T a)
{
    int noOfThingsInStruct;
    noOfThingsInStruct = a[1];
    return a;
}

这一切都可能吗? 我的函数对从文件等中加载的字符串进行排序,但我想我会把那部分留下来。 我希望能够获取此值以使用它来循环并为结构提供正在寻找的正确数量的值。

2 个答案:

答案 0 :(得分:1)

所以你想要动态地弄清楚结构中的成员和方法是什么?类似于,比如说,你可以在运行时在Javascript中做什么,但是在编译时呢?不,你不能。但是,您可以制作模板策略并将此功能基于此。

答案 1 :(得分:0)

简单回答:不可能。

答案很长:仍然没有。

<强>迂回:

  • 您可以使用基于type traits的内容。创建一个模板类numberOfElements<typename T>,并使用您期望的值为您需要的每个struct重载它。然后,在LoadStructFromFile中使用它,因为您知道T
  • 您还可以使用SFINAE来测试某些函数,这些函数将返回结构中元素的数量。如果给定的类/结构实现它,只需使用它来获取成员的数量。如果不是 - 假设只有一个成员(或任何你想要的)。