我正在遵循此tutorial,并逐步遵循了他的教程,当他进入第8集时,我在Level1.h中遇到了错误。
void Level1::Load()
{
sprites = new SpriteSheet(L"test.png", gfx);
}
错误
'SpriteSheet :: SpriteSheet(const SpriteSheet&)':无法将参数1从'const wchar_t [9]'转换为'wchar_t *'
我已经两次编写了Level1.h,Spritesheet.cpp和Spritesheet.h,试图在“ test.png”之前删除“ L”。
还想指出我有Visual Studio 2017。
如果您能解决我的问题<3,我会爱你的。
答案 0 :(得分:4)
C ++中的字符串实际上是字符类型的常数数组,这就是为什么L"test.png"
被称为类型const wchar_t [9]
(大小为9
以适合终止符)的原因。
与其他任何数组一样,它可以衰减为指向其第一个元素的指针,并且该指针的类型为const wchar_t*
。
请注意,在上述类型中使用了const
……这就是构造函数参数中缺少的内容。应该是
SpriteSheet(const wchar_t* filename, Graphics*gfx);
// ^^^^^
// Note the const here