You need to construct an instance of your player
struct before you can then push it into the stack.
Also, operator<<
doesn't know how to stream your player
struct by default, so you need to overload operator<<
to provide that functionality yourself.
If are you using a version of C++ prior to C++11, try this:
#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
If are you using C++11 or later, try this instead:
#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
Alternatively:
#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