Пока вы используете стандартный контейнер, он должен работать, и я думаю, что все в порядке.
В качестве альтернативы, поскольку он является членом класса, вы можете использовать typedef
и выставлять value_type
как вложенный тип класса:
class demo
{
public:
typedef std::vector<std::string> container_type;
typedef container_type::value_type value_type;
value_type call_mem()
{
return *std::begin(memory_); //it is more generic!
}
private:
container_type memory_;
};
Обратите внимание, что *std::begin(memory_)
является более общим, чем memory_[0]
и *memory_.begin()
, так как с ним будут работать даже массивы, но это вряд ли принесет вам пользу в реальном коде.