我需要从成员函数访问本地对象的私有成员。这个例子解释得更好。有没有办法做到这一点,而不是*公开,或没有提供专门分配给* a的功能?此运算符+函数可能必须为本地对象分配和/或解除分配* a。
这post似乎表明这应该有效。
// object.h
class object {
char *a;
...
}
// object.cpp
object object::operator+(object const &rhs) const {
int amount = ...
object local();
// this is ok
this->a = new char[amount];
// this is ok too
rhs.a = new char[amount];
// this is not
local.a = new char[amount];
....
}
我的编译错误(g ++ 4.6.3)是:
error: request for member ‘a’ in ‘local’, which is of non-class type ‘object()’
答案 0 :(得分:3)
object local();
实际上是一个函数声明,而不是一个对象定义。使用以下命令创建变量:
object local;
由于operator +
是类成员,因此您有权访问private
成员,因此问题是由于最令人烦恼的解析。