У меня есть функция рисования (SkCanvas * canvas).
В main () я пишу:
SkBitmap myBitmap;
myBitmap.allocN32Pixels(640, 480);
SkCanvas *myCanvas(&myBitmap);
draw(myCanvas);
Но Visual Studio генерирует эту ошибку:
"a value of type "SkBitmap *" cannot be used to initialize an entity of type "SkCanvas*"
Что я делаю неправильно?
Моя функция draw () загромождает сообщение и совершенно бесполезна для этого вопроса, в противном случае я отправил его.
Это конструкция для SkCanvas.
/** Construct a canvas with the specified bitmap to draw into.
@param bitmap Specifies a bitmap for the canvas to draw into. Its
structure are copied to the canvas.
*/
explicit SkCanvas(const SkBitmap& bitmap);
SkCanvas *myCanvas(&myBitmap);
это указатель на холст. Типы указателей SkCanvas*
а также SkBitmap*
не связаны.
SkCanvas myCanvas(&myBitmap);
это значение типа myCanvas
, инициализируется указателем на растровое изображение. Если SkCanvas
имеет ctor, принимающий SkBitmap*
, это должно работать.
Это не. Это имеет:
explicit SkCanvas(const SkBitmap& bitmap);
так что это значит:
SkCanvas myCanvas(myBitmap);
Вам, вероятно, также понадобится изменить вызов ничьей на это:
draw(&myCanvas);
при условии, что это работает. Как вы думаете, вам также нужно освежить в памяти разницу между указателями и значениями.
Других решений пока нет …