我有一个draw(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
有一个带SkBitmap*
的ctor,这应该可以工作。它不是。它确实具有:
explicit SkCanvas(const SkBitmap& bitmap);
所以这意味着:
SkCanvas myCanvas(myBitmap);
您可能还需要将draw调用更改为此:
draw(&myCanvas);
假设可行。猜测一下,您还需要对指针和值之间的差异进行复习。