我想要一些关于课堂设计的建议。
假设我有3个班级"class A", "class B" and "class C"
。
每个类都有不同的名称空间。
"A" has an instance of "B", and "B" has an instance of "C"
。
每个类都有一个“struct Setting”,每个类都使用SetSettings()设置。
实际上,"A" uses "B" to do its job, and "B" uses "C" to do its job
。
我的问题是,有没有更好的方法来进行这些层次结构设置?
例如,to break the relation between "A" and "C", "B"
可以使用"C::Settings"
的相同参数,而不是定义c_settings ...
提前致谢!
A.H
#include "B.h"
namespace A {
struct Settings {
int param_for_A_1;
B::Settings b_settings;
};
class A {
void SetSettings(const Settings& source) {
settings_ = source;
b_.SetSettings(source.b_settings);
}
Settings settings_;
B::B b_;
};
}
B.h
#include "C.h"
namespace B {
struct Settings {
int param_for_B_1;
int param_for_A_2;
C::Settings c_settings;
};
class B {
void SetSettings(const Settings& source) {
settings_ = source;
c_.SetSettings(source.c_settings);
}
Settings settings_;
C::C c_;
};
}
C.h
namespace C {
struct Settings {
int param_for_C_1;
};
class C {
void SetSettings(const Settings& source) {
settings_ = source;
}
Settings settings_;
};
}
的main.cpp
#include "A.h"
int main() {
A::Settings settings;
// Hierarchy settings...
settings.param_for_A_1 = 1;
settings.b_settings.param_for_B_1= 2;
settings.b_settings.param_for_B_2 = 3;
settings.b_settings.c_settings.param_for_C_1= 4;
class A::A a;
a_.SetSettings(settings);
return;
}
答案 0 :(得分:0)
截至目前,您确实没有使用继承,而是使用组合。组合意味着一个类具有另一个类的属性,而不是继承父类的函数和属性。
如果我想使用继承,我可能会使用C类作为B将继承的基础。然后A将继承自B.每个“代”都有自己的int
属性对应于他们的“设置”。
根据具体情况,这可能更合适。