【发布时间】:2018-03-05 21:16:34
【问题描述】:
是否可以使用模板类型字段制作结构数组?
template<typename T>
struct MyStruct {
T *pField;
};
MyStruct< ?? > mystruct_arr[] = {
{ pFieldOfType1 },
{ pFieldOfType2 },
};
以上显然行不通,但是用其他技术可以吗?
我正在尝试遍历数组 mystruct_arr 并在每个结构行上调用此函数:
template<typename T>
void SetupField(T &pSourceField, ...)
{
Base *field = ...->findBaseFieldFromDatabase(...);
...
pSourceField = static_cast<T>(field);
...
}
原因是尝试重构一段非常重复的代码,我必须根据几个不同的参数静态转换一长串不同类型的代码,而不会使其过于复杂。
【问题讨论】:
-
MyStruct 中只包含一个指针,如果你想达到这个目的,为什么不考虑使用 void* 呢?
-
假设你设法声明和初始化
mystruct_arr。你会如何使用它? -
伊戈尔的问题是关键。因为 ypur 对它的回答决定了如何解决您的问题。您在上面所做的声明没有可观察到的行为;一个空文件符合这些要求。指定准确您需要的内容,或许可以找到解决方案。求月,或含糊地说“我只是想知道”,答案是否定的。
-
@Yakk true,更新了我的问题以包含更多我想要做的事情。
标签: c++ arrays templates struct types