メンバとして std::set を持つ Particle という名前のクラスがあります。クラスは次のようになります。
class Particle {
private:
std::set<vtkIdType> cells;
std::set<vtkIdType>::iterator ipc;
public:
Particle() {};
enum state {EXISTS = -1, SUCCESS = 0, ERROR = 1};
state addCell(const vtkIdType cell);
int numCells() { return static_cast<int>(cells.size()); }
vtkIdType getFirstCell() { return (*(ipc = this->cells.begin()));}
vtkIdType getNextCell() { return *(++ipc); }
vtkIdType hasNextCell() { ++ipc; if (ipc == this->cells.end()) return false; --ipc; return true; }
std::string getOutput();
};
私はセット自体を公開したくないのでgetFirstCell()
、getNextCell()
、特にが存在することに非常に不満を持っています。hasNextCell()
私は途中で使用しなければならず++ipc
、コンパイラエラーが発生し--ipc
たためif((ipc+1) == this->cells.end())
、ipc + 1が問題のようです。
セットをカプセル化してアクセスするにはどうすればよいでしょうか? getFirstCell()
また、関数を取り除く良い方法はありますか?
前もって感謝します。
編集:私が投稿したコードは、クラス構造の単なる例です。「実際の」クラスには、この質問にとってそれほど重要ではないより多くのセットとその他のデータが含まれています (私は想定しています)。