class A{
private:
std::vector<class X> flavor1
std::vector<class X> flavor2
public:
void useVectorOfX(std::vector<class X> someflavor){
... // same logic for both flavors
}
}
现在我想从另一个类调用 useVectorOfX()
,根据需要为其提供 flavor1
或 flavor2
。我可以想到三种方法 -
方式一:使用Getter方法;但是 class A
通过 Getter 方法获取自己的数据似乎不自然。
class B{
public:
A *a = new A();
a->useVectorOfX(a->getFlavor1());
}
方式 2:使两个 vector public
(dirty)
方式 3:分离方法?
class B{
public:
A *a = new A();
a->useVectorOfXForFlavor1();
a->useVectorOfXForFlavor2();
}
最佳答案
方式 1 的描述性更强:
class A {
public:
enum {
flavor1 = 0, // used as array index, first element must be zero
flavor2,
} vector_flavor;
static const int number_of_flavors = 2;
void useVectorOfX(vector_flavor flav){
std::vector<class X> someflavor& = vectors[flav];
// ...
}
private:
std::vector<class X> vectors[number_of_flavors];
}
A object; // lol
object.useVectorOfX(A::flavor1);
关于c++ - 一种使用不同风格的私有(private)成员的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6395768/