У меня есть класс User() с друзьями из знакомых переменных. друзья установлены в функцию addFriend() и возвращаются в функцию getFriends().Частная переменная, назначенная в функции, но не снаружи
class User
{
public:
User();
void setName(string username);
void addFriend();
string getFriends();
string getName();
private:
string name;
string friends;
};
User::User()
{
friends = ",";
}
void User::setName(string username)
{
name = username;
}
void User::addFriend()
{
string friendName;
cout << "Enter friends name: "; //inputs "Bob"
cin >> friendName;
cout << endl;
friends += friendName + ",";
cout << getFriends() << endl; //this outputs ",Bob,"
}
string User::getFriends()
{
return friends;
}
string User::getName()
{
return name;
}
Функция addFriend() ведет себя, как это следует в том, что, когда друг добавляется в список друзей, они отделены друг от друга запятыми. Когда я вызываю функцию getFriends() внутри функции addFriend(), она ведет себя так, как ожидалось. Однако, когда я пытаюсь вызвать user.getFriends(); Я получаю только запятую («,»).
class System
{
public:
System();
void createUser();
User& getCurrentUser();
vector<User> users;
private:
User currentUser;
};
System::System() {}
void System::createUser()
{
string username;
bool userExists = false;
cout << "Please enter a user name: ";
cin >> username;
cout << endl;
for(int i = 0; i < users.size(); i++)
{
if(users.at(i).getName() == username)
userExists = true;
}
if(!userExists)
{
User temp; //creates a temporary user stored in vector of Users
users.push_back(temp); //puts new User at end of users
users.back().setName(username);
currentUser = users.back();
}
if(userExists)
cout << "User already exists." << endl << endl;
}
User& System::getCurrentUser()
{
return currentUser;
}
Системный класс может вызывать другие неуказанные функции в User() без проблем.
int main()
{
System system;
system.createUser(); //create user named "Bill"
system.getCurrentUser().addFriend(); //inputs "Bob"
for(int i = 0; i < system.users.size(); i++)
{
string buddies = system.users.at(i).getFriends();
cout << "User: " + system.users.at(i).getName();
cout << " - Friends: " << buddies << endl;
}
}
Это выводит только запятую. Почему это?
Редактировать 1: Язык C++.
Редактировать 2: Я пропустил большую часть кода ради простоты на том, что, как я думал, было проблемой. Теперь я добавляю класс, его функции и его взаимодействия с User().
Возможно, это зависит от того, на каком языке это. –
Прекрасно работает для меня. http://ideone.com/9R2WBI – Roddy
Прекрасно работает для меня. http://ideone.com/CWoNOf –