我有一个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);


假设可行。猜测一下,您还需要对指针和值之间的差异进行复习。

10-04 13:31