Как установить параметр по умолчанию для вектора ‹string› для использования в конструкторе по умолчанию внутри класса?

Например, класс с именем Table, конструктором которого является: Table(string name="", vector <string> mods);

Как мне инициализировать вектор пустым?

Изменить: забыл упомянуть, что это C++.


person Omar    schedule 06.12.2009    source источник
comment
Я предполагаю, что это С++?   -  person Mark Byers    schedule 06.12.2009


Ответы (2)


Table(string name="", vector <string> mods);

если вы хотите, чтобы вектор был пустым внутри конструктора, тогда

mods.clear();

or

mods.swap(vector<string>());

Если вы хотите в качестве параметра по умолчанию:

 Table(string name="", vector<string> mods = vector<string>());

Как и любой другой параметр по умолчанию.

person aJ.    schedule 06.12.2009
comment
Ах спасибо! Я продолжал пробовать такие вещи, как векторные ‹string› mods(0,) и многие другие варианты. Никак бы не догадался! - person Omar; 06.12.2009
comment
Поймав ваше сообщение до того, как вы его отредактировали, этот метод работает vector ‹string› mods = vector‹string›() и просто vector mods = vector() жалуется на необходимость аргумента шаблона. Я рад, что увидел первое сообщение, потому что я, вероятно, не догадался бы поместить аргумент шаблона в обе стороны присваивания. - person Omar; 06.12.2009
comment
Если вы хотите, чтобы ваш аргумент vector<string> mods имел значение reference, то в таких случаях вы должны использовать const, потому что C++ не позволяет связывать временные переменные с reference. - person Krishna Oza; 09.03.2016

Чтобы добавить к другому ответу: если вы используете С++ 11, вы можете использовать универсальный синтаксис инициализации, чтобы сократить объявление параметра по умолчанию для вектора до следующего:

Table(string name="", vector<string> mods={});
person user35147863    schedule 02.05.2014
comment
намного лучше, чем другие варианты. - person dani; 11.10.2015