如何将矢量的单元格传递给C++函数?
How to pass vector's cell to a function in C++?
我想创建一个函数,从向量的单元格中获取对象并对其进行修改。首先,我需要通过引用函数来传递这个单元格,但我不能这样做。
void circleChoiceOne(Circle& object);
vector<Shape*> shapeArr;
int main()
{
circleChoiceOne(shapeArr[choice]);
return 0;
system("PAUSE");
}
我得到的错误指向第 7 行,它说:不能使用 Shape *
类型的值初始化 Circle &
类型的引用。
shapeArr[choice]
将返回一个Shape*
但该方法需要Circle&
。
我假设Circle
是Shape
的子类。
您将需要一个dynamic_cast
将Shape*
向下转换为Circle*
,然后您需要取消对值的指针的引用,以便可以通过引用传递它。
强制转换之前,您需要验证Shape*
是否确实指向Circle
(而不是Rectangle
或Torus
),并在不指向时处理情况。
你不能用指针初始化引用(当然,除非它是对指针的引用) - 这正是编译器所说的。更改函数签名以接受指针,或使用取消引用的对象调用函数,或将std::ref
存储在容器中。这是假设Shape
是Circle
的后代(这有点奇怪)。
例:
void circleChoiceOne(Circle* object);
或
circleChoiceOne(*shapeArr[choice]);
或
vector<std::ref<Shape>> shapeArr;
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗