Мне просто интересно, можно ли сделать что-то подобное ниже? Прямо сейчас в функции itemModifier
я передаю каждый элемент структуры отдельно из диапазона на основе цикла for. Прямо сейчас это нормально, однако, поскольку я подозреваю, что параметры функции будут расти, я не хочу иметь одну гигантскую функцию, которая принимает 8 переменных, а вместо этого лучше будет передавать объект по ссылке и напрямую обращаться к переменным a
и b
вместо того, чтобы делать их копии.
class Items
{
public:
struct lastItems
{
int a;
int b;
};
public:
bool itemModifier(Items &items)
vector<lastItems> getItems(); // just returns lastItems
};
bool Items::itemModifier(Items &items)
{
std::cout << items.a << std::endl;
std::cout << items.b << std::endl;
return true;
}
int main()
{
Items items;
/* Read file supplied in that populates a and b
and adds it to vector<lastItems> */
for(auto &i:items){
item.itemModifier(i);
}
return EXIT_SUCCESS;
}
``
ну, класс
Items
не имеет данных. Вы хотели добавитьprivate: vector<lastItems> li;
"Мне просто интересно, можно ли сделать что-то подобное ниже?" -- Учитывая, что "это ниже" существует, я заключаю, что да, это возможно. Возможно, вы могли бы описать словами, чего вы пытаетесь достичь, прежде чем бросить нас в код?
Почему бы не передать в качестве аргумента
struct
, который содержит другие переменные? У вас есть варианты передачи этогоstruct
по ссылке и/или для того, чтобы этотstruct
содержал элементы, которые являются ссылками (инициализированными, чтобы они ссылались на выбранные вами переменные). Если вы не хотите передавать какие-либо дополнительные аргументы, вы будете ограничены либо изменениемItems
, чтобы он содержал ссылку, либо (вариант с большим количеством недостатков) сохранением дополнительных переменных в глобальные