考虑以下情况,其中一些内容通过多个层添加到向量中:
class A {
public:
void Add(Content c) {
// Considerable amount of checking code here.
v.push_back(c);
}
private:
std::vector<Content> v;
};
class B {
public:
void Add(Content c) {
// Considerable amount of additional code here.
a.Add(c);
}
private:
A a;
};
class C {
public:
void Add(Content c) {
// Considerable amount of additional code here.
b.Add(c);
}
private:
B b;
};
这可以继续,但你在这里看到了重点。我希望通过复制或移动添加内容,即通过 push_back(const Content&) 或 push_back(Content&&)。调用者应该能够调用:
C c;
Content z;
c.Add(z);
或者
c.Add(move(z));
并获得最少数量的副本。
有没有一种方法可以在不重复附加代码且不使用 Add functions 模板函数的情况下实现这一点?