使用参数实例化模板 class 的 class 成员的正确方法

Correct way to instantiate a class member of template class with paramter

我有一个带有实例化参数的模板 class。 我有另一个 class 有一个 class.

的成员参数

下面没有编译,因为它说实例化方法被删除了...

class MyClass {
public:
    MyTClass<AClass> tclass;
}

下面的方法可行,但我不确定这是否是正确的方法...

class MyClass {
public:
    MyTClass<AClass> tclass = MyTClass<AClass>(1234);
}

成员参数似乎已实例化,但它是否在所有者 class 销毁时整理?

如果可以保持代码整洁,我希望避免使用 new 和 delete,所以我想我希望在 class 实例化时优先使用成员参数实例化。由于我添加了显式实例化,我是否需要回退到 new 和 delete 以确保它被销毁?

不,您不需要在这里做任何额外的事情。 MyClass 的析构函数调用所有成员的析构函数,无论它们最初是如何构造的。

(即使成员是指针也是如此。但是指针的析构函数什么都不做,这就是为什么你需要 delete 调用来析构和释放 它指向的东西.)