Я получил этот класс и двумерный массив это объекты:Обращение к второму измерению массива
class Foo
{
public:
Foo(int x)
{
value = x;
}
int value;
};
Foo foo1(1), foo2(2), foo3(3), foo4(4);
Foo* fooArray1[4][2] = { {&foo1, &foo2}, {&foo2, &foo3}, {&foo3, &foo4}, {&foo4, &foo1} };
Теперь я хочу сослаться на второе измерение этого массива. Как-то:
Foo* fooArray3[2] = fooArray1[2];
Но мой компилятор продолжает говорить мне:
Unallowed Assignment »Foo* (*)[2]« to »Foo* [2]«
Единственный вариант я получил на работу был:
Foo** fooArray2 = fooArray1[3];
Но с этой версией у меня есть доступ к fooArray2 с что я не хочу:
cout << "fooArray2[0]: " << (*fooArray2)[0].value << " fooArray2[1]: " << (*fooArray2)[1].value << endl;
у вас есть неправильный путь. это должно быть (* fooArray2 [1]). значение или с помощью оператора стрелки. Приказ, который вы используете, вызывает неопределенное поведение. –
'(* fooArray2) [0] .value' просто нелогично, вы хотите' (* (fooArray2 [0])). Value' или эквивалент: 'fooArray2 [0] -> value'. – Antoine
Спасибо! fooArray2 [0] -> значение приятно! – Reini