dynamic-cast 相关问题

dynamic_cast转换允许在继承层次结构中安全地将指针(和引用)转换为类,向上,向下和侧向。

自定义 TableViewCell 错误:无条件快速动态_cast 类

我收到错误,因为以下内容是无条件的 swiftdynamic_cast 类, func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 瓦...

回答 3 投票 0

无法使用通用函数获取dynamic_cast

尝试对基类指针列表中的子类指针执行dynamic_cast。 这是层次结构: 基类{}; SubA 类:公共 Base{}; SubB 类:公共 Base{}; 那我有一个...

回答 1 投票 0

如何使用dynamic_cast运算符识别失败的转换?

Scott Meyer 在他的《Effective C++》一书中说,dynamic_cast 用于向下或跨继承层次结构执行安全转换。也就是说,您使用dynamic_cast将指针或引用强制转换为基类...

回答 3 投票 0

如何将dynamic_cast与指向子类的指针数组一起使用

我有一个指向对象类 e_t 的指针数组: 类 e_t {...}; 我写了一个模板类: 模板 类cursor_t { 光标_t(e_t ** &_source, size_t _total); ...

回答 1 投票 0

指向子类调用正确虚函数的指针

#包括 A类{ 民众: 虚拟无效 print() { std::cout << "class A" << std::endl; } }; class B : public A { public: virtual void print() override {...

回答 1 投票 0

什么时候可以安全地使用 static_cast 在 C++ 中进行向下转型?

我需要知道在什么条件下可以使用 static_cast 以便将父类指针转换为子类指针而不会导致未定义的行为。 通常dynamic_cast是

回答 1 投票 0

如何确定派生类中某些内容的类型?

我正在制作一个农业模拟器,其中有 Produce 类,该类继承了 Crops 和 Animals 两个类。每当时间流逝,我都会检查我的一系列农田,其中......

回答 1 投票 0

通过 std::ref 将共享指针传递给 std::bind 将剥离它的多态性

当我尝试将基类“this”指针动态转换为派生类指针时,我的程序因 SIGSEGV 崩溃。我想知道它是否与 std::bind 和 std::ref 有关。下面...

回答 2 投票 0

c++ 模板参数类型变量的dynamic_cast

为什么动态转换不适用于模板参数类型专用的向量? 我怎么解决这个问题?我想从一个向量中确定其中的元素是否是

回答 1 投票 0

c++ 模板参数类型变量的dynamic_cast

为什么动态转换不适用于模板参数类型专用的向量? 我怎么解决这个问题?我想从一个向量中确定其中的元素是否是

回答 1 投票 0

以最少的样板消除dynamic_cast代码生成的开销

如何获取所有必要的信息,以便在运行时从下面的代码打印“dynamic_cast(p)->eval()”的等效更快的代码字符串? (请找到

回答 1 投票 0

C 中的继承和方法覆盖 - 如何使其定义行为

我有自定义的小 OOP 式继承功能,如下所示: // 基类 结构基标签; 类型定义结构{ int (*DoAwesomeStuff)(struct BaseTag* pInstance); } S_BaseVtabl...

回答 1 投票 0

shared_ptr std::dynamic_pointer_cast 失败并出现“试图引用已删除的函数”错误

我已经看过 StackOverflow 中所有关于此类似错误的帖子,但仍然找不到导致我出现问题的原因。 我正在使用 std::dynamic_pointer_cast 来转换 std::shared_ptr 我已经看过 StackOverflow 中关于这个类似错误的所有帖子,但仍然找不到导致我出现问题的原因。 我正在使用 std::dynamic_pointer_cast 将 std::shared_ptr<Base> 对象转换为 std::shared_ptr<DerivedShared> 对象,但我遇到了“试图引用已删除的函数”错误。我已经确保 Base 析构函数是虚拟的,但错误仍然存在。 什么可能导致此错误,我该如何解决?标准库中是否存在任何可能导致此问题的已知限制或错误?任何见解或建议将不胜感激。 P.S:我知道它适用于 static_pointer_cast 但想知道是什么导致了 dynamic_pointer_cast 的问题! struct Base { Base() = default; virtual ~Base() = default; //Copy Base(const Base&) = default; Base& operator=(const Base&) = default; //Move Base(Base&&) = default; Base& operator=(Base&&) = default; }; struct DerivedShared : public Base { public: DerivedShared() //: data(std::shared_ptr<int[]>(new int[3]{1,2,3})) { //data = std::make_shared<int[]>(new int[3]{ 1,2,3 }); data = std::shared_ptr<int[]>(new int[3]{ 1,2,3 }); } public: std::shared_ptr<int[]> data; }; int main() { std::cout << "----------------------------------------\n"; std::shared_ptr<Base> base5 = std::make_shared<DerivedShared>(); for (size_t i = 0; i < 3; ++i) { std::cout << std::dynamic_pointer_cast<DerivedShared>(base5)->data[i] << '\n'; } }

回答 0 投票 0

如果 dynamic_cast<void*> 强制转换一个底层非最派生类的对象会发生什么?

我们知道dynamic_cast会强制转换一个指向最派生对象的指针;但是如果底层对象不是最派生的呢?例如: 类 BaseClass { 公共:

回答 2 投票 0

当把基类转为派生类时,dynamic_cast失败。

我有两个类,基类和派生类。基类有一个虚拟的方法,我的测试例子如下: class Base { public: virtual void Hello() { cout << "-> Hello Base" & 。下面是我的测试例子: class Base { public: virtual void Hello() { cout << "-> Hello Base" &...。

回答 1 投票 0

为什么我在使用memset将对象填充为0后,在dynamic_cast时出现异常?

我得到这个奇怪的运行时异常与dynamic_cast,但只有当我填写的对象,我正在铸造与零使用memset,或只是复制一些数据到它与memcpy 。下面是一个例子...

回答 2 投票 0

如何用unique_ptr执行动态_cast?

我的类层次结构如下: class BaseSession : public boost::enable_shared_from_this。 class DerivedSessionA : public BaseSession class DerivedSessionB : public BaseSession ...

回答 4 投票 26

在一个对象向量上进行dynamic_cast,C++。

我有这样的代码。/设置应用系统的应用向量 void AppSystem::setAppVector(vector) &applicationVector){ try{ vector &tmp1(); ...

回答 1 投票 0

C++动态投稿,是不是多态的?

当我运行下面的代码时 当我运行下面的代码: #include class Shape{ public: }; class Square:public Shape { public: }; class Circle:public Shape { double r; public: void SetRadious(double ...)

回答 1 投票 0

运行时多态性和dynamic_cast需要澄清

可能在其他地方回答了问题,但是找不到正确的短语来询问,所以请听。我的基础班是A,孩子B和C。 (完全出于培训目的)#include class ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.