可能重复:
c++ template problem
大家好:
我一直试图做以下事情:
template <typename T>
struct test {
T* value;
test(int num_of_elements) { value = new T[num_of_elements] };
}
std::vector<test *> fields_;
即。我想制作一组指向一组测试结构的指针,这些结构具有不同类型的值?
我该怎么做?
由于
罗斯
答案 0 :(得分:1)
我不确定制作指向测试模板的指针意味着什么(与测试类形成对比)。但是,如果您确定要这样,可以尝试:
struct baseTest {
virtual GetNumberOfElems() = 0;
};
template <typename T>
struct test : public baseTest {
std::size_t n;
T* value;
test(int num_of_elements) { value = new T[n = num_of_elements] };
int GetNumberOfElems() { return n; }
}
std::vector<baseTest *> fields_;
答案 1 :(得分:1)
您可以使用Boost::any之类的内容。文档中的一个示例几乎完全说明了您的用例(至少,正如您到目前为止所描述的那样):
struct property
{
property();
property(const std::string &, const boost::any &);
std::string name;
boost::any value;
};
typedef std::list<property> properties;