C++ 的基本原则之一是所有对象的类型在编译时都是已知的。这是绝对的规则,没有例外。
相关对象的类型是std::any。仅当该类型在编译时也已知时,它才可以转换为其他类型。
您会注意到这std::type_info::name()不是一个constexpr表达式。返回的字符串仅在运行时已知。您正在尝试将某些内容强制转换为仅在运行时才知道其类型的对象。C++ 不是这样工作的。
一般来说,每当发生这种情况时,几乎所有时候正确的解决方案都会涉及在基类上调用虚拟方法。您可能需要重新设计您的类以使用继承和虚拟方法;使用它们的共同基类而不是std::any; 然后调用其虚拟方法。在某些情况std::variant下也可能有效。
| 归档时间: |
|
| 查看次数: |
1365 次 |
| 最近记录: |