Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

C++ 如何使用向量上的动态_cast? #包括 使用名称空间std; 结构基{ Base(){}; 虚~Base(){}; }; 派生结构:基 { int k; }; int main(){ 向量外基; 衍生dtemp; dtemp.k=10; 外底推回(dtemp); 派生&dNow=动态铸造(outBase[0]); 返回0; }

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不是

上面的代码给出了执行错误

这里,首先我将派生类对象存储到基类向量中。然后从这个向量中,我需要将存储的数据转换成另一个派生对象。 主要的重要性是学习如何使用dynamic cast将存储在vector of type Base中的数据获取到派生类对象中


但如果
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;
}