我正在尝试编译绑定(bind)类的程序,以便可以将其与松鼠脚本一起使用。
我正在Windows 7下使用VS2010,并已使用带有调试配置的Unicode字符集编译了松鼠库和sqrat。
我得到的错误是在\ sqrat \ sqratclass.h,第81行中:
error C2664: 'Sqrat::Class<C>::InitClass' : cannot convert parameter 1 from 'const char *' to 'const Sqrat::string &'
有人知道我该怎么做才能正常工作吗?还是这是sqrat中的错误?非常感谢你!
这是c++文件:
#include <iostream>
#include <string>
#include <sqrat.h>
class TestClass
{
public:
int integerVar;
std::wstring stringVar;
void printString() { std::wcout << this->stringVar; }
};
void squirrelPrint(SQChar * text)
{
std::wcout << text << std::endl;
}
int main()
{
HSQUIRRELVM squirrelvm = sq_open(1024);
Sqrat::DefaultVM::Set(squirrelvm);
Sqrat::RootTable().Bind(L"TestClass", Sqrat::Class<TestClass>()
.Func(L"printString", &TestClass::printString)
.Var(L"integerVar", &TestClass::integerVar)
.Var(L"strVar", &TestClass::stringVar));
Sqrat::Script script;
script.CompileFile(L"testfile.nut");
script.Run();
}
编辑:
给出错误的行是:
InitClass(typeid(*this).name());
最佳答案
抱歉,在这里问这个问题之前,我应该已经尝试过了。
我下载了0.8.9版,这是sqrat的“最新版本”,如其主页上所述。它可能是最新的稳定版本。
无论如何,我现在已经使用https://github.com/Amorph/sqrat/中的sqrat尝试了完全相同的操作
而且有效!除了我不得不改变这条线
return sq_throwerror(vm, "No overload matching this argument list found");
进入
return sq_throwerror(vm, _SC("No overload matching this argument list found"));
关于c++ - 松鼠,平方根,绑定(bind)类时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17516114/