Поскольку вы говорите о классе, я думаю, что он должен быть закрытым. Если вы хотите, чтобы он был общедоступным, скорее создайте структуру - чтобы было очевидно, что вы хотите использовать переменные members .
Жизнеспособной альтернативой представлению члена vector
является создание функции посетителя (или внутреннего итератора). Таким образом, вы лучше подчиняетесь закону Деметры:
class ContWrapper {
std::vector<int> _ints;
public:
class Action {
public:
virtual void accept( int i ) = 0;
};
void each_int( Action& a );
};
Также будьте очень осторожны при экспорте, например. std::vector<T>
из библиотеки тоже: клиентский код может не использовать ту же реализацию STL, что и вы, поэтому расположение этих переменных-членов может отличаться!