有没有更好的方法在初始化期间调用外部setter而不是在构造函数体中执行它?
示例:
struct Foo {
Foo()
: object(someValue)
// can't do this:
// , object.setProperty(differentValue)
{
// have to call it here
object.setProperty(differentValue);
}
}
假设object
类是外部的,无法修改以防止必须使用setter。
答案 0 :(得分:0)
还有另一种方式,但我不会说它更好。
您的代码中可以有另一个结构:
struct Helper {
Helper(Object &object, int differentValue) {
object.setProperty(differentValue);
}
}
并在Foo
struct Foo {
Object object;
Helper helper; // after object
Foo() : object(someValue), helper(object, differentValue) {
}
}
但这只是一个技巧,无论如何都不是更好。
您还可以从Foo
继承Helper
,而不是helper
成为Foo
的成员。