我有一个平局(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);
答案 0 :(得分:1)
SkCanvas *myCanvas(&myBitmap);
这是一个指向画布的指针。 <{1}}和SkCanvas*
的指针类型无关。
SkBitmap*
这是类型SkCanvas myCanvas(&myBitmap);
的值,使用指向位图的指针初始化。如果myCanvas
有一个SkCanvas
,那么这应该有效。
没有。确实有:
SkBitmap*
所以这意味着:
explicit SkCanvas(const SkBitmap& bitmap);
您可能还需要将绘图调用更改为:
SkCanvas myCanvas(myBitmap);
假设有效。作为猜测,您还需要重新思考指针和值之间的差异。