#include #include "refl/refl.h" using namespace std; using namespace refl; struct vec3_parent { virtual void norm(int x1, int& x2) { x2 = x1 * x2; //cout << x2 << "vec3_parent::norm" << endl; } }; struct vec3 : public vec3_parent { float x = 1; float y = 2; float z = 3; string name{ "hellohellohellohellohellohello" }; void norm(int x1, int& x2)override { x2 = x1 * x2; cout << x2 << "vec3::norm" << endl; } virtual float norm1(int& x1) { x1 = x1 * x * y * z; //x = x1; //y = x1 - 1; //z = x1 - 10; //cout << x1 << "::norm1" << endl; return x1; } static void norm2(int x1 = 10) { cout << x1 << "::norm2" << endl; } static void norm3(int x1 = 10) { x1 = x1 * 10; cout << x1 << "::norm3" << endl; } using MyUClass = UClass_Meta; //这里好像不需要 consteval static auto __StaticFields() { return std::make_tuple(&vec3::x, &vec3::y, &vec3::z, &vec3::norm, &vec3::norm1, &vec3::norm2); }; consteval static auto __MakeStaticFields() { return std::array{ MakeStaticField(&vec3::x, "x"), MakeStaticField(&vec3::y, "y"), MakeStaticField(&vec3::z, "z"), MakeStaticField(&vec3::norm, "norm", { 10,9 }), MakeStaticField(&vec3::norm1, "norm1", { 10 }), MakeStaticField(&vec3::norm2, "norm2", { 10 }), }; } static auto __MakeFields() { return std::array{ Field::MakeField(&vec3::x, "x"), Field::MakeField(&vec3::y, "y"), Field::MakeField(&vec3::z, "z"), Field::MakeField(&vec3::norm, "norm", {10,9}), Field::MakeField(&vec3::norm1, "norm1", {10}), Field::MakeField(&vec3::norm2, "norm2", {10}), }; }; };