从一个模板容器铸造到另一个模板
Casting from one templated container to another
我目前正在编写WinRT代码,但是我想这个问题适用于所有C 。在用户交互后,该框架将我的一个功能称为传递带有通用对象的向量^ pointers的功能(对您的非释放人来说,与void*非常相似)。我已经知道向量中有哪种类型的对象,我想将向量施放为该对象类型。
示例:
MyClass::SomeFunction(Vector<Object^>^ myList) {
// Warning: The following line doesn't work!!
Vector<SpecificType^>^ myTypedList = static_cast<Vector<SpecificType^>^>(myList);
// Here, I go on to interact with the templated vector.
...
}
编译器不允许我使用static_cast。Safe_cast抛出异常。dynamic_cast不会抛出异常,但返回了空指针。
有什么方法可以施放这件事,或者我实际上必须创建一个新的向量并将所有成员复制(将每个成员从object^ cast tos^ specifictype^ in插入)?
您不能将Vector<Object^>
施加到任何其他Vector<>
,因为它们之间不涉及继承。您唯一能做的就是将每个元素投入到正确的类中。因此,如果您想要Vector<SpecificType^>
,则确实需要重新创建它。并不是说太难了:
Vector<SpecificType^> specificList;
for (Object^ p : myList)
specificList.push_back(static_cast<SpecificType^>(p));
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- C++试图读取一个文件并输出到另一个文本文件
- 如何将指针从一个void函数传递到另一个C++
- 如何从另一个文件继承私有成员变量和公共函数
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- C ++读取用户输入的字符一个一个符号
- 循环速度要比一个一个一个一个
- 计算一个*一个没有溢出的模数n