如果没有虚拟方法,则该make_unique行可以main编译正常。但我不知道如何Derived在它存在时直接初始化这样的东西。这可能吗?
struct Base
{
virtual void method();
};
struct Derived : public Base
{
int i;
};
int main() {
Base base{}; // this works
make_unique<Derived>(Base{}, 3); // this doesn't compile unless the virtual method is removed
}
Run Code Online (Sandbox Code Playgroud)
我在“直接初始化”页面中没有看到任何提及虚拟方法:https://en.cppreference.com/w/cpp/language/direct_initialization
使用该virtual方法,您的Derived类不再是聚合,因此无法完成这种形式的初始化。
来自cppreference:
聚合是以下类型之一:
struct为 或union),具有
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |