如果是模板类呢
时间: 2024-02-25 12:55:31 浏览: 47
如果是模板类,创建指向子对象的指针需要满足以下要求:
1. 子对象必须是模板类的公有成员之一。
2. 子对象必须有默认构造函数。
3. 子对象必须是模板类的直接或间接基类之一。
例如,如果要创建指向子对象的指针,可以这样定义模板类:
```
template <typename T>
class Parent {
public:
Parent() {}
virtual ~Parent() {}
};
template <typename T>
class Child : public Parent<T> {
public:
Child() {}
~Child() {}
};
template <typename T>
class MyClass {
public:
MyClass() : child(new Child<T>()) {}
~MyClass() { delete child; }
private:
Child<T>* child;
};
```
在这个例子中,Child 是 Parent 的公有子类,MyClass 中包含一个指向 Child 对象的指针 child,child 的值在 MyClass 构造函数中通过 new 运算符分配。同时,MyClass 析构函数中也要负责释放 child 指针所指向的内存。由于 Parent 是一个模板类,Child 继承自 Parent<T>,因此我们需要在定义 MyClass 时将模板参数 T 传递给 Child。
阅读全文