C++ 从指针C++;

C++ 从指针C++;,c++,C++,我有一个对象向量(DimensionItem),我想将另一个项目推到该向量。我只有一个指向我想推的对象的指针。如何从指针获取对象 (指针新手,很可能我根本误解了什么) DimensionItem*selected_Item=dynamic_cast(g_items[i])//g_items是从我的场景中获取的项目列表 矢量二分体; DimItems.push_back(所选_项); 错误消息是: 调用“std::vector::push_back(DimensionItem*&)”时没有匹配的

我有一个对象向量(DimensionItem),我想将另一个项目推到该向量。我只有一个指向我想推的对象的指针。如何从指针获取对象

(指针新手,很可能我根本误解了什么)

DimensionItem*selected_Item=dynamic_cast(g_items[i])//g_items是从我的场景中获取的项目列表
矢量二分体;
DimItems.push_back(所选_项);
错误消息是:

调用“std::vector::push_back(DimensionItem*&)”时没有匹配的函数

您可能需要:

DimensionItem& selected_Item = dynamic_cast<DimensionItem&>(*g_items[i]); // Throws if g_items[i] is not DimensionItem.
vector<DimensionItem> DimItems;
DimItems.push_back(selected_Item); // Stores a copy of selected_Item.
DimensionItem&selected_Item=dynamic_cast(*g_items[i]);//如果g_项[i]不是维度项,则抛出。
矢量二分体;
DimItems.推回(选定项);//存储所选项目的副本。
dynamic_cast(g_items[i])
如果
g_items[i]
不是
DimensionItem
,则返回空指针,因此代码需要在取消引用它之前检查指针是否为空


dynamic\u cast(*g\u items[i])
在这种情况下会引发异常。

DimItems.push\u back(*selected\u Item)
如果
selected\u Item
是指针,则无法将其添加到对象容器中。相反,您必须使用
*
运算符取消对指针的引用。重新打开,原因不仅仅是取消对该问题的引用。由于OP对于指针来说似乎是新的,您可能应该提到,您的代码将创建原始值的副本。@RadosławCybulski Done。
DimensionItem& selected_Item = dynamic_cast<DimensionItem&>(*g_items[i]); // Throws if g_items[i] is not DimensionItem.
vector<DimensionItem> DimItems;
DimItems.push_back(selected_Item); // Stores a copy of selected_Item.