Я пытаюсь перенести класс из библиотеки, которой я пользуюсь в Lua. Specifially, я пытаюсь перенести цветной класс от SFML. Полный источник для цветного класса виден здесь и здесь.
Это - функция, которая это - то, что я перестал работать в.
int SFColor_new(lua_State* L)
{
// omitting part where I set r, g, b, and a
new (lua_newuserdata(L, sizeof(Color))) Color(r, g, b, a); // Line 47
luaL_getmetatable(L, LuaInfo::myMetaTableName);
lua_setmetatable(L, -2);
return 1;
}
И это - ошибка
LuaSFMLColor.cpp: In function ‘int ag::SFColor_new(lua_State*)’:
LuaSFMLColor.cpp:47: error: no matching function for call to ‘operator new(unsigned int, void*)’
:0: note: candidates are: void* operator new(unsigned int)
make: *** [game] Error 1
Я делаю подобные вещи в нескольких других местах, не сталкиваясь с этой ошибкой, таким образом, я не уверен, что вызвало бы ее. При рассмотрении исходного кода Цвета, я не вижу ничего странного или необычного, и у меня закончились идеи. Я также попытался использовать конструктора по умолчанию (т.е. никакие аргументы) и затем просто установить значение позже, но это не приносило пользы также.
Чтобы использовать стандартную форму размещения новый
, вы должны #include
.
Используемая вами форма new
требует объявления void * operator new (std :: size_t, void *) throw ();
.
Вам не нужно #include
использовать без размещения new
.