访问本地对象的私有成员(相同类类型)

时间:2012-05-02 09:21:32

标签: c++ oop private-members local-variables member-functions

我需要从成员函数访问本地对象的私有成员。这个例子解释得更好。有没有办法做到这一点,而不是*公开,或没有提供专门分配给* 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()’

1 个答案:

答案 0 :(得分:3)

object local();

实际上是一个函数声明,而不是一个对象定义。使用以下命令创建变量:

object local;

由于operator +是类成员,因此您有权访问private成员,因此问题是由于最令人烦恼的解析