можно еще использовать глобальный экземпляр Program, но со статиком мне кажется симпатичнее.
Либо сделать у Program конструктор, который будет брать ссылку на коллекцию из параметра
class Program
{
private:
Collection * fCollection;
public:
Program();
Program( Program &pr )
{
fCollection = pr.fCollection;
}
};
Program globalcollection;
{
// wanna use method
Program p(globalcollection);
...
p.addToCollection(...);
}
Другой вопрос, если ты создаешь экземпляр класса только для того, чтобы добавить данные в глобальную коллекцию, то проще изменить концепцию.
Например. В конструкторе проверяешь создана ли коллекция, если нет - создаешь, если да, ничего не делаешь. Указатель на коллекцию разумеется статический.
Дальше нужен статичный метод, который будет возвращать ссылку на коллекцию, с которой можно будет что-то делать или статичный метод который будет добавлять данные в коллекцию по твоим законам
Мне это видится так.