@Deerenaros правильно написал что не совсем понятно что вы хотите,
но при этом кусок кода
Button *buttons = new Button[100500];
ButtonProcessor proc(buttons);
вместе с конструктором по современным понятиям содержит в себе несколько ошибок.
Так лучше не делать, вам придется помнить что нужно вызывать delete[], при этом желательно вызвать delete[] уже после того как отработает деструктор ButtonProcessor (деструктор может использовать buttons), а в приведенном коде это невозможно.
До кучи инициализация переменной в теле конструктора - тоже плохой подход почитайте c++ RAII
en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Resource...
Да и у конструкторов C++ есть синтакисис для инициализации name(params) : button(button) который до кучи позволяет избегать ряда проблем см пр RAII
Чтоже делать? Как вариант перестать использовать массивы в чистом виде и использовать std::vector, из стандартной библиотеки,
либо поставить boost - почитать про контейнеры буста, про смарт поинтеры, и использовать либо готовые контейнеры например boost::array, либо boost::shared_array,
Тогда проблем с памятью и т.п. вы избежите, поэтому вместо того чтобы писать код - посвятите время - и почитайте полезную литературу
Рекомендую начать с C++ faq
www.parashift.com/c++-faq
потом пробежать тут
en.wikibooks.org/wiki/More_C%2B%2B_Idioms
и почитать про boost - boost.org
После прочтения вышеперечисленного у вас не будет возникать вопросов что куда как и где.
Без всего этого код на C++ превратится для вас в непрерывную попаболь.