C++ 如何传递向量';将s单元格转换为C++;?
我想做一个函数,从向量的单元格中获取一个对象并对其进行修改。首先,我需要通过引用函数来传递这个单元格,但我不能这样做C++ 如何传递向量';将s单元格转换为C++;?,c++,class,object,vector,pass-by-reference,C++,Class,Object,Vector,Pass By Reference,我想做一个函数,从向量的单元格中获取一个对象并对其进行修改。首先,我需要通过引用函数来传递这个单元格,但我不能这样做 void circleChoiceOne(Circle& object); vector<Shape*> shapeArr; int main() { circleChoiceOne(shapeArr[choice]); return 0; system("PAUSE"); } void circlechoice(圆和对象); 矢量形
void circleChoiceOne(Circle& object);
vector<Shape*> shapeArr;
int main()
{
circleChoiceOne(shapeArr[choice]);
return 0;
system("PAUSE");
}
void circlechoice(圆和对象);
矢量形耳环;
int main()
{
圆形选择(形状耳环[选择]);
返回0;
系统(“暂停”);
}
我得到的错误指向第7行,它说:
Circle&
类型的引用不能用Shape*
类型的值初始化您不能用指针初始化引用(当然,除非它是指针引用)-这正是编译器所说的。将函数签名更改为接受指针,或使用解引用对象调用函数,或将std::ref
存储在容器中。这是假设形状
是圆
的后代(这有点奇怪)
例如:
void circleChoiceOne(Circle* object);
或
或
矢量形耳环;
您不能用指针初始化引用(当然,除非它是对指针的引用)——这正是编译器所说的。将函数签名更改为接受指针,或使用解引用对象调用函数,或将std::ref
存储在容器中。这是假设形状
是圆
的后代(这有点奇怪)
例如:
void circleChoiceOne(Circle* object);
或
或
矢量形耳环;
shapeArr[choice]
将返回一个Shape*
,但该方法需要一个圆&
我假设Circle
是Shape
的一个子类
您需要一个dynamic\u cast
将形状*
向下转换为圆形*
,然后您需要取消对某个值的指针的引用,以便通过引用传递它
您需要验证
形状*
是否实际指向圆
(与矩形
或圆环体
)然后才能进行铸造,如果不指向,则进行处理。形状*
将返回形状*
,但该方法需要圆&
我假设Circle
是Shape
的一个子类
您需要一个dynamic\u cast
将形状*
向下转换为圆形*
,然后您需要取消对某个值的指针的引用,以便通过引用传递它
您需要验证
形状*
是否实际指向圆形
(相对于矩形
或圆环体
),然后在不指向圆形的情况下进行处理。我正在尝试动态铸造:“shapeArr[choice]=dynamic_cast(*Circle);”但它显示的是“Circle”-不允许键入名称。@YazenVid您的问题和我的回答涉及从向量访问元素,而不是分配给它。另外,您的注释中的代码不会编译,因为Circle
是一种类型,而不是变量。我正在尝试动态转换:“shapeArr[choice]=dynamic_cast(*Circle);”但它在“Circle”上显示-不允许使用类型名称。@YazenVid您的问题和我的答案涉及从向量
访问元素,而不是分配给它。此外,注释中的代码不会编译,因为Circle
是一种类型,而不是变量。它不起作用,它说:“没有合适的从“Shape”到“Circle*”的转换函数。它说:“没有合适的从“Shape”到“Circle*”的转换函数。”
vector<std::ref<Shape>> shapeArr;