Согласно моему GCC вышеупомянутый код не компилируется, потому что объявление extractHistogram()
появляется после определения класса, в котором оно friend
ed. Компилятор подавляет оператор friend
, говоря, что extractHistogram
не является ни функцией, ни элементом данных. Все работает хорошо, и bins
становится доступным, когда я перемещаю объявление до определения класса (и добавляю предварительное объявление class GHistogram;
, чтобы тип возвращаемого значения был известен компилятору). Конечно, код для extractHistogram()
должен быть написан внутри пространства имен, либо
namesapce MyNameSpace {
// write the function here
}
или
GHistogram *MyNameSpace::extractHistogram( //....