Передача параметра вектора пустым
Я использовал этот класс:
class DogTrainer
{
public:
DogTrainer(int identity,const std::string& nom, const std::vector<Dog*> dogz) :
idD(identity),
name(nom),
trainees(dogz)
{ };
~DogTrainer();
private:
int idD;
string name;
std::vector<Dog*> trainees;
};
но иногда, когда я хочу создать экземпляр нового объекта, мне не нужно передавать параметр "ученики", поэтому я хочу иметь возможность сделать это
DogTrainer* Trainer=new DogTrainer(my_id, my_name);
поэтому я попытался изменить в своем конструкторе DogTrainer
DogTrainer(int identity,const std::string& nom, const std::vector<Dog*> dogz="") :
idD(identity),
name(nom),
trainees(dogz)
{ };
но это не сработало, так что помогите, пожалуйста!
2 ответа
Решение
Объявите ваш конструктор как:
DogTrainer(int identity,const std::string& nom,
const std::vector<Dog*> dogz = std::vector<Dog*>());
""
это const char*
и std::vector
не конструируем из этого.
Между прочим, нет особого смысла dogz
быть const std::vector<Dog*>
, Либо сделать это неconst
или сделать это const
ссылка.
Это не будет работать, потому что вы пытаетесь присвоить пустую строку vector
, Просто перегрузите конструктор, пропустив последний параметр.
DogTrainer(int identity,const std::string& nom, const std::vector<Dog*> dogz)
:idD(identity), name(nom), trainees(dogz) {
};
DogTrainer(int identity,const std::string& nom):idD(identity), name(nom) {
};
Это будет практически то же самое с точки зрения пользователя, что вы хотите достичь.