chr*_*irk 2 c++ templates class subclass
有没有办法消除Foo中的显式构造函数调用,并以某种方式将Bar :: len分配给Bar的任何子类的大小?
class Bar
{
size_t len_;
Bar(size_t len) : len_(len) { }
};
class Foo : public Bar
{
Foo() : Bar(sizeof(Foo)) { }
};
Run Code Online (Sandbox Code Playgroud)
您可以使用"奇怪的递归模板"来通知基类的派生类的类型:
template <typename Derived>
class Bar
{
size_t len_;
protected:
Bar() : len_(sizeof(Derived)) {}
};
class Foo : public Bar<Foo>
{
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |