如何将矢量的单元格传递给C++函数?

How to pass vector's cell to a function in C++?

本文关键字:C++ 函数 单元格      更新时间:2023-10-16

我想创建一个函数,从向量的单元格中获取对象并对其进行修改。首先,我需要通过引用函数来传递这个单元格,但我不能这样做。

void circleChoiceOne(Circle& object);
vector<Shape*> shapeArr;
int main()
{
    circleChoiceOne(shapeArr[choice]);
    return 0;
    system("PAUSE");
}

我得到的错误指向第 7 行,它说:不能使用 Shape * 类型的值初始化 Circle & 类型的引用。

shapeArr[choice]将返回一个Shape*但该方法需要Circle&

我假设CircleShape的子类。

您将需要一个dynamic_castShape*向下转换为Circle*,然后您需要取消对值的指针的引用,以便可以通过引用传递它。

强制转换之前,您需要验证Shape*是否确实指向Circle(而不是RectangleTorus),并在不指向时处理情况。

你不能用指针初始化引用(当然,除非它是对指针的引用) - 这正是编译器所说的。更改函数签名以接受指针,或使用取消引用的对象调用函数,或将std::ref存储在容器中。这是假设ShapeCircle的后代(这有点奇怪)。

例:

void circleChoiceOne(Circle* object);

circleChoiceOne(*shapeArr[choice]);

vector<std::ref<Shape>> shapeArr;