🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
Class.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "Struct.hpp"
25#include "AstUtil/SharedPtr.hpp"
26#include "AstUtil/Object.hpp"
27
28AST_NAMESPACE_BEGIN
29
30class Object;
31
36class AST_UTIL_API Class: public Struct
37{
38 typedef Object* (*FConstructor)(Object* parentScope);
39
40public:
43 Class(Class* parent = nullptr);
44
45 ~Class();
46
49 Class* getParent() const{ return parent_; }
50
52 void addToRegistry() const;
53
56 Object* NewObject(Object* parentScope) const;
57
60 Object* getDefaultObject() const;
61public:
62
66 void setParent(Class* parent){ parent_ = parent; }
67
71 void setConstructor(FConstructor constructor){ constructor_ = constructor; }
72
76 template<typename T>
77 void setParent()
78 {
79 //setParent(T::getStaticType());
80 setParent(&T::staticType);
81 }
82
86 template<typename T>
88 setConstructor([](Object* parentScope) -> Object* {
89 auto obj = new T();
90 obj->setParentScope(parentScope);
91 return obj;
92 });
93 }
94protected:
95 Class* parent_{nullptr};
96 FConstructor constructor_{nullptr};
97 SharedPtr<Object> defaultObject_{nullptr};
98};
99
100
101AST_NAMESPACE_END
类元信息
定义 Class.hpp:37
void setConstructor()
设置构造函数
定义 Class.hpp:87
Class * getParent() const
获取父类
定义 Class.hpp:49
void setParent(Class *parent)
设置父类
定义 Class.hpp:66
void setParent()
设置父类
定义 Class.hpp:77
void setConstructor(FConstructor constructor)
设置构造函数
定义 Class.hpp:71
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:81
共享指针
定义 SharedPtr.hpp:33
结构体类
定义 Struct.hpp:37