xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
destruct.cc
浏览该文件的文档.
1
2class Mobject {
3 public:
4 virtual ~Mobject() {}
5};
6
7template <typename T>
8class PosMObject {
9 private:
10 size_t pos_;
11
12 public:
13 T *set_pos(size_t pos) {
14 pos_ = pos;
15 return static_cast<T *>(this);
16 }
17
18 public:
19};
20template <typename T>
22 private:
23 size_t size_;
24
25 public:
26 T *set_size(size_t size) {
27 size_ = size;
28 return static_cast<T *>(this);
29 }
30
31 public:
33};
34
35template <class _Derived, template <class> class... Args>
36class ComposedMobject : public Mobject, public Args<_Derived>... {
37 public:
38 virtual ~ComposedMobject() {}
39};
40
41class MyObject : public ComposedMobject<MyObject, PosMObject, SizeMObject> {
42 public:
43};
44
45int main() {
46 auto myobject = new MyObject{};
47
48 myobject->set_pos(11)->set_pos(11)->set_size(11)->set_size(11);
49
50 Mobject *m = myobject;
51
52 delete m;
53 return 0;
54}
virtual ~ComposedMobject()
Definition destruct.cc:38
virtual ~Mobject()
Definition destruct.cc:4
T * set_pos(size_t pos)
Definition destruct.cc:13
T * set_size(size_t size)
Definition destruct.cc:26
int main()
Definition destruct.cc:45