2010-07-01 37 views
19

Tôi đang cố gắng kết hợp một lớp học từ thư viện mà tôi đang sử dụng ở Lua. Đặc biệt, tôi đang cố gắng bọc lớp màu khỏi SFML. Có thể xem toàn bộ nguồn cho lớp màu sắc herehere.Không có chức năng phù hợp để gọi cho nhà điều hành mới

Đây là chức năng đó là rằng tôi thất bại trong.

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<Color>::myMetaTableName); 
    lua_setmetatable(L, -2); 
    return 1; 
} 

Và đây là lỗi

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*)’ 
<built-in>:0: note: candidates are: void* operator new(unsigned int) 
make: *** [game] Error 1 

tôi làm những điều tương tự ở một vài nơi khác mà không gặp phải lỗi này, vì vậy tôi không chắc điều gì sẽ gây ra nó. Nhìn vào mã nguồn của màu sắc, tôi không thấy bất cứ điều gì lạ hoặc không bình thường, và tôi đã hết ý tưởng. Tôi cũng đã thử sử dụng hàm tạo mặc định (nghĩa là không có đối số) và sau đó chỉ cần thiết lập giá trị sau đó, nhưng điều đó cũng không làm được điều gì tốt.

+1

Điều này không liên quan đến Lua. – lhf

+0

Tôi không biết rằng vào thời điểm đó. : P – Alex

Trả lời

59

Để sử dụng biểu mẫu vị trí chuẩn là new, bạn phải #include <new>.

Biểu mẫu new mà bạn đang sử dụng yêu cầu khai báo void* operator new(std::size_t, void*) throw();.

Bạn không phải #include <new> để sử dụng không phải vị trí new.

+0

+1. Tôi không bao giờ biết rằng. Có lẽ rất nhiều tiêu đề STL sử dụng vị trí mới (vì lý do khá rõ ràng) và tôi không bao giờ phải tự bao gồm #, nhưng nếu bạn có tệp mà bạn không có, vd, vectơ, thì bạn có thể cần bao gồm thủ công nó. – Puppy

+3

Điều này đã làm điều đó. Tôi chưa bao giờ nhận ra nó cho đến khi nó được đăng. Nó phải được chôn trong một số tiêu đề khác mà tôi đã sử dụng mà không cần tôi biết. Cảm ơn. :) Bạn học được điều gì mới mỗi ngày. (pun dự định) – Alex

+0

@ Alex: +1 cho pun =) – Cogwheel

Các vấn đề liên quan