0
我有一個定義類:如何用ChaiScript中的用戶類型的std :: initializer_list調用構造函數?
class MyType {
public:
MyType();
MyType(int x);
MyType(std::initializer_list<MyType> list);
}
註冊我的自定義類及其ChaiScript V6.0.0構造函數如下:
chai.add(chaiscript::user_type<MyType>(), "MyType");
chai.add(chaiscript::constructor<MyType()>(), "MyType");
chai.add(chaiscript::constructor<MyType(int)>(), "MyType");
chai.add(chaiscript::constructor<MyType(std::initializer_list<MyType>)>(), "MyType");
我的下一個腳本:
std::string script1 = R""(
def Test1() {
var m = MyType();
}
Test1();
)"";
auto res = chai.eval<MyType>(script1);
std::string script2 = R""(
def Test2() {
var m = MyType(10);
}
Test2();
)"";
auto res2 = chai.eval<MyType>(script2);
std::string script3 = R""(
def Test3() {
var m = MyType({10, 20});
}
Test3();
)"";
auto res3 = chai.eval<MyType>(script3);
script1
和script2
運行沒有問題,但script3
給我下一個執行錯誤:
Error: "Incomplete equation" during evaluation at (9, 14)
從ChaiScript調用構造函數MyType(std::initializer_list<MyType>)
的正確方法是什麼?
注意:正確的'std :: in itializer_list <>'構造函數看起來像這樣:'MyType(std :: initializer_list list);'See:http://en.cppreference.com/w/cpp/utility/initializer_list另見:http:// stackoverflow。 com/a/17803511/2296177 –
user2296177
@ user2296177感謝格式建議。 – chema989
@ chema989:ChaiScript是否有辦法註冊一個可變參數函數?如果沒有,我看不到ChaiScript能夠做到這一點的方法。所有'initializer_list'實例最終都來自braced-init-list。哪一個是C++語法結構; ChaiScript不能製造這樣的東西。 –