Если у меня есть класс DataManager
:
class DataManager
{
public:
int getRecordInt( size_t i ) const;
std::string getRecordString( size_t i ) const;
private:
std::vector<int> _vInt;
std::vector<std::string> _vString;
}
Я могу получить доступ к записям, например,
DataManager DM;
// .. populate object ...
int iValue = DM.getRecordInt(3);
В моем реальном приложении у меня будет более сотни типов данных (помимо int и std :: string), поэтому я бы не хотел писать отдельный получатель для каждого из типов.
Теперь, если C ++ будет поддерживать шаблонные имена переменных (чего нет), я мог бы реализовать класс как:
class DataManager
{
public:
template<typename T>
T getRecord( size_t i ) const
{
return _v<T>[i];
}
private:
std::vector<int> _v<int>;
std::vector<std::string> _v<std::string>;
}
Есть ли способ достичь цели на C ++?
(Имейте в виду, что хотя я упростил пример до минимума, моя реальная проблема намного сложнее и требует существования такого DataManager
класса.)
int iValue = DM.getRecord<int>(3);
. Я надеюсь, что идея, которую я преследую, ясна. - person user7065361   schedule 26.07.2017_v
std::vector<int>
не зависит от того, как вызываетсяgetRecord
, и неясно, что вы имеете в виду с_v<int>
в объявлении. - person 463035818_is_not_a_number   schedule 26.07.2017