使用模板成员数据
Using Template Member data
我试图使用一个基于模板的类作为另一个类的成员。另一个类将根据其数据成员值决定基于模板的成员应该使用的数据类型。为此,我使用了一些多态性来决定运行时的实例化。
class Base
{
public:
virtual void print() = 0;
};
template <typename T>
class templateDynamic : public Base
{
public:
templateDynamic();
~templateDynamic();
void print();
};
template <typename T>
templateDynamic<T>::templateDynamic()
{
}
template <typename T>
templateDynamic<T>::~templateDynamic()
{
}
template <typename T>
void templateDynamic<T>::print()
{
}
class Holder
{
private:
Base * m_ABC;
public:
Holder(int a);
void print();
};
void Holder::print()
{
m_ABC->print();
}
Holder::Holder(int a)
{
if(a == 1)
m_ABC = new templateDynamic<int>();
else
m_ABC = new templateDynamic<float>();
}
int main()
{
Holder aHolder(1);
aHolder.print();
Holder aHolder2(2);
aHolder.print();
}
打印函数将根据T的类型进行打印,是int还是float。此时我遇到了一个链接器错误。
错误LNK2019:未解析的外部符号"public:__thiscalltemplateDynamic::templateDynamic(void)"(??0$templateDynamic@H@@QAE@XZ)在函数"public:__thiscall Holder::Holder(void)"(??0 Holder@@QAE@XZ)
您尚未定义templateDynamic
和Holder
的构造函数
相关文章:
- 嵌套在类中时无法设置成员数据
- 私有成员数据不可用于公共成员功能
- 我想知道我是否可以将一个类分配给特定的成员数据并创建该类的实例
- 类的成员数据未更新
- 为什么类成员数据必须是静态的才能被模板化类的模板化结构成员访问
- C++:成员不可访问-使用友元函数允许一个类修改另一个类的成员数据
- 如何高效更改向量中所有对象的成员数据?
- constexpr 偏移量,带有指向成员数据的指针
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- C++ 类析构函数删除部分但不是全部成员数据
- 初始化 MFC 中 CFormView 派生类的成员数据
- 覆盖复制/移动分配超载时,我是否需要删除当前的成员数据
- 根据参数设置构造函数的成员数据类型
- 对齐说明符:在类型 / 上 成员数据
- 如何实现ressize()以更改C 中动态成员数据的能力
- C++ 阻止复制成员数据
- 什么是成员数据指针的正确赋值语句
- C++ 在类中使用 strcmp() 处理私有成员数据
- 成员数据在stack实例上覆盖
- 初始化继承的成员数据