Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.146.34.191] |
|
Сообщ.
#1
,
|
|
|
Здраствуйте!
Скорее я туплю, чем не туплю const int SIZE = 4; class Square; typedef Square SquareArray[SIZE]; typedef SquareArray SquareArrayArray[SIZE]; class Square { public: Square() : mX(0), mY(0) {} Square(int x, int y) : mX(x), mY(y) {} ~Square(){} private: int mX, mY; }; SquareArray squareArray = { Square(0, 0), Square(0, 1), Square(1, 1), Square(1, 0) }; SquareArrayArray squareArrayArray = { &squareArray, //<-- здесь ошибка &squareArray, &squareArray, &squareArray }; компилятор пишет ошибку: error C2440: 'initializing' : cannot convert from 'SquareArray (*)' to 'Square' что делать? |
Сообщ.
#2
,
|
|
|
Цитата Cfon @ что делать? Внимательно посмотреть на ту строчку, на которую указал компилятор. А присваивать объекту, указатель на этот объект нельзя, пока не перегрузишь соответствующий оператор. А я же, не очень понял, что именно ты хотел сделать, читал по диаганали. |
Сообщ.
#3
,
|
|
|
Цитата Cfon @ error C2440: 'initializing' : cannot convert from 'SquareArray (*)' to 'Square' что делать? Передавать не указатель, а значение, вот так надо объявлять: SquareArrayArray squareArrayArray = { *(squareArray + 0), //<-- здесь ошибка *(squareArray + 1), *(squareArray + 2), *(squareArray + 3) }; Ну или вот так: SquareArrayArray squareArrayArray = { squareArray[0], //<-- здесь ошибка squareArray[1], squareArray[2], squareArray[3] }; Добавлено А еще лучше, объявить двумерный массив и не усложнять себе жизнь, и остальным за одно. Добавлено Да, и еще у тебя скрытая ошибка компиляции в коде. Чуть позже до нее дойдешь, особенно исходя из того, как ты любишь MFC. Конкретно в имени твоей константы. Добавлено https://msdn.microsoft.com/en-us/library/wi...6(v=vs.85).aspx |
Сообщ.
#4
,
|
|
|
Пардон я допустил опечатку
typedef Square SquareArray[SIZE]; typedef SquareArray* SquareArrayArray[SIZE]; первый это массив объектов Square, а второй массив указателей на массив объектов Square. Добавлено Цитата KILLER @ Да, и еще у тебя скрытая ошибка компиляции в коде. Чуть позже до нее дойдешь, особенно исходя из того, как ты любишь MFC. Конкретно в имени твоей константы. Добавлено https://msdn.microsoft.com/en-us/library/wi...6(v=vs.85).aspx спс ясно буду помнить, переименую на SQUARE_ARRAY_SIZE |