Member 13816159 Ответов: 1

Как удалить определенный вектор из данного класса В C++


Здравствуйте, я пишу программу, которая позволяет пользователям вводить музыкальный альбом и хранить его в векторах. Затем программа спрашивает пользователя, стоит ли его одалживать. Для этого я попробовал использовать .erase данного вектора. Однако векторная функция определяется в конструкторе класса, и модификация выполняется позже с другой функцией, но внутри того же класса. Любая помощь будет очень признательна, спасибо.

Что я уже пробовал:

class Album :public Entry {
private:
        vector <string> vec;
	string singer, label;
	string combine; //to combine artist and record label
	int choice;
public:
	Album();
	void Borrow1() {};
};

Album::Album() {
	do
	{
		cout << "Enter the singer(type end to finish)" << endl;
		getline(cin, singer);
		if (singer == "end")
			break;
		cout << "Enter the label: " << endl;
		getline(cin, label);
		combine = singer + " ,by, " + label;
		cout << "The singer and label is: " << combine << endl;
		vec.push_back(combine);
	} while (true);

	cout << "you entered:  " << endl;
	for (int i = 0; i < vec.size(); i++) {
		cout << "Number " << i << ". Item is: " << vec[i] << endl;
	}
}

void Album::Borrow1() { 
	cout << "Which item is borrowed? Enter the number." << endl;
	cin >> choice;
	vec.erase(vec.begin() + choice);
	cout << "Done" << endl;
	cout << "The followings still remain:  " << endl;
	for (int i = 0; i < vec.size(); i++) {
		cout << "# : " << i << ". Album is: " << vec[i] << endl;
	}
}

1 Ответов

Рейтинг:
11

Richard MacCutchan

Вы не объяснили проблему. Хотя я подозреваю, что ваша запись объявления класса для Borrow1 неправильный. У вас в классе есть следующее:

public:
Album();
void Borrow1() {}; // Borrow1 is an empty function.
};

А вы потом определитесь Album::Borrow1() с правильным телом. В моем тесте этот код даже не будет компилироваться.


CPallini

Действительно. 5.