当我尝试GHistogram从extractHistogram()实现中访问类的bin私有成员时,我收到以下错误:
error: 'QVector<double> MyNamespace::GHistogram::bins' is private
error: within this context
Run Code Online (Sandbox Code Playgroud)
"在此上下文中"错误指向extractHistogram()实现的位置.有谁知道我朋友的功能声明有什么问题?
这是代码:
namespace MyNamespace{
class GHistogram
{
public:
GHistogram(qint32 numberOfBins);
qint32 getNumberOfBins();
/**
* Returns the frequency of the value i.
*/
double getValueAt(qint32 i);
friend GHistogram * MyNamespace::extractHistogram(GImage *image,
qint32 numberOfBins);
private:
QVector<double> bins;
};
GHistogram * extractHistogram(GImage * image,
qint32 numberOfBins);
} // End of MyNamespace
Run Code Online (Sandbox Code Playgroud)
根据我的GCC,上面的代码没有编译,因为声明extractHistogram()出现在friend编辑它的类定义之后.编译器在friend语句上扼杀,说这extractHistogram既不是函数也不是数据成员.bins当我将声明移到类定义之前(并添加一个前向声明,class GHistogram;以便编译器知道返回类型)时,一切运行良好并且可以访问.当然,代码extractHistogram()应该写在命名空间内,或者通过
namesapce MyNameSpace {
// write the function here
}
Run Code Online (Sandbox Code Playgroud)
要么
GHistogram *MyNameSpace::extractHistogram( //....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6649 次 |
| 最近记录: |