У вас есть как переменная-член c publi , так и функция c publi, называемая top
. Вы должны переименовать одну из них.
Вы также должны серьезно рассмотреть вопрос о создании переменной (и, действительно, всех переменных) private
, так как в противном случае силы вне вашего класса могут свободно возиться с его внутренностями таким образом, что вам не понравится.
Весь смысл инкапсуляции заключается в том, чтобы скрывать подобные вещи от внешнего мира, чтобы у вашего класса было ограниченное количество вещей, которые он представляет. Например, с переменной publi c я мог бы просто сделать:
st.m_top = -2; // Assumes you've renamed it to distinguish from top().
, откинуться на спинку кресла и насладиться фейерверком: -)