C++ 如何使用向量上的动态_cast? #包括 使用名称空间std; 结构基{ Base(){}; 虚~Base(){}; }; 派生结构:基 { int k; }; int main(){ 向量外基; 衍生dtemp; dtemp.k=10; 外底推回(dtemp); 派生&dNow=动态铸造(outBase[0]); 返回0; }
上面的代码给出了执行错误 这里,首先我将派生类对象存储到基类向量中。然后从这个向量中,我需要将存储的数据转换成另一个派生对象。 主要的重要性是学习如何使用dynamic cast将存储在vector of type Base中的数据获取到派生类对象中C++ 如何使用向量上的动态_cast? #包括 使用名称空间std; 结构基{ Base(){}; 虚~Base(){}; }; 派生结构:基 { int k; }; int main(){ 向量外基; 衍生dtemp; dtemp.k=10; 外底推回(dtemp); 派生&dNow=动态铸造(outBase[0]); 返回0; },c++,c++11,c++14,dynamic-cast,C++,C++11,C++14,Dynamic Cast,上面的代码给出了执行错误 这里,首先我将派生类对象存储到基类向量中。然后从这个向量中,我需要将存储的数据转换成另一个派生对象。 主要的重要性是学习如何使用dynamic cast将存储在vector of type Base中的数据获取到派生类对象中 但如果Derived&dNow=dynamic_cast(dtemp),则没有错误或异常。请注意,moto是如何使用dynamic cast将数据(以outBase[i]的形式)从类型为Base的vector读取到派生类对象中 #include不是
但如果
Derived&dNow=dynamic_cast(dtemp)代码>,则没有错误或异常。请注意,moto是如何使用dynamic cast将数据(以outBase[i]的形式)从类型为Base的vector读取到派生类对象中 #include
不是标准标题,甚至在定义它的工具链中也不打算直接包含。包括它直接做与它应该做的相反的事情,减少编译时间,将构建时间降低近一个数量级,正如你从这个链接中看到的,很多人认为不恰当地使用它只是害羞的.Hi@Barry。您已将我的问题标记为与对象切片相关。但我没有从这些问题中得到答案,因为我的问题是abt,在动态转换中使用向量。请看最后几行。这是密切相关的。你的动态转换毫无意义,因为你放入向量的派生的
是切片的,而向量中只有基本的
实例。我添加了另一个类似的问题,这不是最好的重复,但我希望它能有所帮助。#include
不是一个标准标题,甚至在定义它的工具链中也不打算直接包含它。包括它直接做与它应该做的相反的事情,减少编译时间,将构建时间降低近一个数量级,正如你从这个链接中看到的,很多人认为不恰当地使用它只是害羞的.Hi@Barry。您已将我的问题标记为与对象切片相关。但我没有从这些问题中得到答案,因为我的问题是abt,在动态转换中使用向量。请看最后几行。这是密切相关的。你的动态转换毫无意义,因为你放入向量的派生的是切片的,而向量中只有Base
实例。我添加了另一个类似的问题,这不是最好的重复,但我希望它能有所帮助
#include <bits/stdc++.h>
using namespace std;
struct Base{
Base() {};
virtual ~Base() {};
};
struct Derived: Base
{
int k;
};
int main() {
vector<Base> outBase;
Derived dtemp;
dtemp.k =10 ;
outBase.push_back(dtemp);
Derived& dNow = dynamic_cast<Derived&>(outBase[0]);
return 0;
}