Возможно ли это? Вот пример :
fraction <T> fraction<T>::operator+(const fraction& b) const
{
fraction newFrac(*this);
fraction newB(b);
newFrac.LCD_cast_both(newB);
newFrac.integer += newB.integer;
return newFrac;
}
будет ли это работать? Integer - приватный член типа T.
Будет*.
Вот объяснение из C++ FAQ:
В идентификаторе this нет ничего специального. Доступ даётся или не даётся в зависимости от класса объекта (или ссылки/указателя на него), вне зависимости от идентификатора, представляющего ссылку/указатель/объект.
[...]
Давайте рассмотрим оператор присваивания: Foo::operator=(Foo const& x). Этот оператор должен, скорее всего, изменить данные в объекте-приёмнике, *this, исходя из значений данных в объекте-источнике, x. В отсутствие правила C++, которое мы обсуждаем, единственная возможность для оператора получить доступ к закрытым полям x — это если бы класс Foo имел открытый get-метод для каждого закрытого поля! Это была бы полная хрень.
(перевод мой)
*при наличии правильного конструктора копирования у fraction<T>, конечно.
Продвижение своими сайтами как стратегия роста и независимости