Проверка переменной класса в цикле
У меня например есть класс
class MyClass
{
public:
int a;
private:
};
И созданные экземпляры:
void Foo() {
MyClass a;
a.a = 5;
MyClass b;
b.a = 4;
MyClass c;
c.a = 55;
MyClass d;
d.a = 54;
}
Как мне в цикле узнать, в каких экземплярах класса a > 5? И вывести ссылку на этот экземпляр
int main()
{
for (/*Проверка*/)
{
if (/*Проверка */ > 5) std::cout << &/*Класс*/;
}
return 0;
}
Ответы (1 шт):
Автор решения: AR Hovsepyan
→ Ссылка
Если объекты создаются в одной функции, а в другой вы хотите иметь доступ к этим объектам, то их (или ссылки), нужно как то хранить. И, конечно, не обязательно хранить в массиве. Вот пример хранения информации(хранимое значение объекта и имя объекта) в строковом потоке:
using Item = std::pair<MyClass, std::string>;
std::ostream& operator<<(
std::ostream& stream, const Item& info)
{
stream << info.first.a
<< '\t' << info.second;
return stream;
}
std::stringstream my_ios;
void Foo() {
MyClass a;
a.a = 5;
MyClass b;
b.a = 4;
MyClass c;
c.a = 55;
MyClass d;
d.a = 54;
my_ios << Item{ a, "a" } << ' ' << Item{ b, "b" }
<< ' ' << Item{ c, "c" } << ' ' << Item{ d, "d" };
}
int main()
{
Foo();
for (Item p{}; my_ios >> p.first.a >> p.second;)
{
if (p.first.a > 5)
std::cout << "value = " << p << " - \"object\"\n";
}
return 0;
}