c++ - 一种使用不同风格的私有(private)成员的方法

标签 c++

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(),根据需要为其提供 flavor1flavor2。我可以想到三种方法 -

方式一:使用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/

相关文章:

c++ - 在没有 key 的情况下读取密文的剩余噪声预算

c++ - 如何强制实现者做某事

c++ - C++ 中缺少标准化命名约定 "standard"

c++ - 在不移动末尾的情况下删除文件中间的字节?

c++ - Boost::格式化十六进制输出

c++ - 事件是 SFML。 switch 语句 VS if 语句

c++ - 检测图像中的点并进行比较

c++ - 如何使用 PathCreateFromUrlA API

c++ - 有没有办法使用位来初始化 char ?

c++ - 在映射 C++ 中存储对象引用