Как да задам параметър по подразбиране за вектор ‹string› за използване в конструктор по подразбиране в клас?

Например клас с име Таблица, чийто конструктор е: Table(string name="", vector <string> mods);

Как бих инициализирал вектора да бъде празен?

Редактиране: Забравих да спомена, че това беше C++.


person Omar    schedule 06.12.2009    source източник
comment
Предполагам, че това е C++?   -  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

За да добавите към другия отговор: Ако използвате c++11, можете да използвате универсалния синтаксис за инициализация, за да съкратите декларацията на параметър по подразбиране за вектор до следното:

Table(string name="", vector<string> mods={});
person user35147863    schedule 02.05.2014
comment
много по-добре от другите опции. - person dani; 11.10.2015