您需要構建你player
結構的實例之前,您就可以將其推入堆棧。
另外,operator<<
不知道如何在默認情況下流式傳輸player
結構,因此您需要重載operator<<
以自行提供該功能。
如果您使用版本的C++之前,C++ 11,試試這個:如果您使用的是C++ 11或更高版本
#include <iostream>
#include <string>
#include <stack>
#include <cstdlib>
struct player
{
std::string name;
std::string surname;
int age;
player(const std::string &name, const std::string &surname, int age)
: name(name), surname(surname), age(age)
{
}
void print(std::ostream &out) const
{
out << "Name: " << name << " " << surname << ", Age: " << age;
}
};
std::ostream& operator<<(std::ostream &out, const player &p)
{
p.print(out);
return out;
}
std::stack<player> stack1;
int main()
{
stack1.push(player("Zlatan", "Ibrahimovic", 11));
std::cout << stack1.top() << std::endl;
std::system("Pause");
return 0;
}
Live Demo
,試試這個來代替:
#include <iostream>
#include <string>
#include <stack>
#include <cstdlib>
struct player
{
std::string name;
std::string surname;
int age;
void print(std::ostream &out) const
{
out << "Name: " << name << " " << surname << ", Age: " << age;
}
};
std::ostream& operator<<(std::ostream &out, const player &p)
{
p.print(out);
return out;
}
std::stack<player> stack1;
int main()
{
stack1.push(player{"Zlatan", "Ibrahimovic", 11});
std::cout << stack1.top() << std::endl;
std::system("Pause");
return 0;
}
Live Demo
或者:
#include <iostream>
#include <string>
#include <stack>
#include <cstdlib>
struct player
{
std::string name;
std::string surname;
int age;
player(const std::string &name, const std::string &surname, int age)
: name(name), surname(surname), age(age)
{
}
void print(std::ostream &out) const
{
out << "Name: " << name << " " << surname << ", Age: " << age;
}
};
std::ostream& operator<<(std::ostream &out, const player &p)
{
p.print(out);
return out;
}
std::stack<player> stack1;
int main()
{
stack1.emplace("Zlatan", "Ibrahimovic", 11);
std::cout << stack1.top() << std::endl;
std::system("Pause");
return 0;
}
Live Demo
歡迎堆棧溢出。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。始終將錯誤信息作爲文本逐字發送,而不是圖像。 –
使用'stack1.push(player {「Zlatan」,「Ibrahimovic」,11})' –
您需要[重載'operator <<'](http://stackoverflow.com/questions/476272/how-to-如果你想能夠像這樣輸出一個'struct',否則誰知道你打算如何打印這種類型? –