через Класс создан тип, что имеет стрин и вектор, как вписать вектор
проблема заключаеться в то, что я хз как записать нулевой вектор в созданом типе через класс
class nameValues
{
nameValues();
nameValues(const std::string& s, const std::vector<int>& v) :
itsName(s),itsValues(v)
{}
nameValues(const std::string& s) :
itsName(s), itsValues(0)
{}
void setValue(const int&);
void print() const;
std::string getName() const;
//void setName(const std::string&);
//std::vector<int> getValue() const;
private:
std::string itsName;
std::vector<int> itsValues;
};
void nameValues::setValue(const int& val)
{
itsValues.push_back(val);
}
void nameValues::print() const
{
}
std::string nameValues::getName()const
{
return itsName;
}
int main()
{
nameValues week(const std::string&);//, const std::vector<int>&);
std::vector<nameValues> daysScores(8);
daysScores[0] = week("Montag");
daysScores[1] = week("Dinstag");
}
что нужно дописать после Montag в daysScores[0] = week("Montag"); чтобы он правильно заработал (0 не подходит, думал через другой конструктор где будет только стрин и вектор будет сам инициализироватся, тоже не вышло)
Ответы (1 шт):
Итак, ваш код...
nameValues week(const std::string&);//, const std::vector<int>&);
Это - объявление функции week от строки, которая возвращает nameValues.
daysScores[0] = week("Montag");
Присваивание результата вызова функции элементу вектора. Самой функции нигде нет, заметим. Но и это еще не все. При создании вектора вы говорите, что он будет заполнен восемью элементами nameValues, которые должны быть созданы с помощью конструктора по умолчанию. И это было бы нормально, но конструктор-то у вас private (как все члены класса по умолчанию), и недоступен!
Значит, как минимум, надо добавить public:
class nameValues
{
public:
nameValues() {};
nameValues(const std::string& s, const std::vector<int>& v) :
Компилируется. Но week только объявлена, но тела ее нет - и вы получаете ошибку линковки.
Я не знаю, если вы хотите именно некоторую функцию week - тогда напишите ее, и все заработает. Если это ошибка - то, вероятно, вы хотели (ох, как же трудно отвечать на вопросы партизан, которые решили умереть, но не выдать фашистам, которыми считают отвечающих, свои тайны - например, что должна делать программа...) написать что-то вроде
daysScores[0] = nameValues("Montag");
daysScores[1] = nameValues("Dinstag");
Вот так и компилируется, и линкуется, ну, а дальше думайте сами - то ли это, что вы хотели, или нет...