首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类私有指针成员返回有关问题

2012-03-26 
类私有指针成员返回问题classA{public:A(){}A*next(){return_next}private:A*_next}当写下如下代码时会

类私有指针成员返回问题
class   A{
public:  
   
    A(){}
   
    A   *   next()
    {
        return   _next;
      }
   
private:
    A   *_next;  
};

当写下如下代码时会出现non-lvalue的错误
A   *ptr1=new   A();
B   *ptr2=new   A();
ptr-> next()=ptr2;
这个是什么原因?   是不时函数next()的返回值是一个临时变量,对指针返回值也要用临时变量么?



[解决办法]
1. 我估计你是希望产生一个链。但是在你的设计中next返回值存放在一个临时对象中。

2. 你也许希望这样:

class A{
public:
A() { }

A * & next() { // 这个地方有变化
return _next;
}
private:
A * _next;
};

int main() {
A a;
a.next() = new A();
return 0;
}

3. 但你干嘛要这样想? 真要这样还不如public _next 呢。
[解决办法]
假设,_next = 0x00001,也就是0x000001才是目标对象的地址.
那么next( )返回的就是_next里的内容
也就是0x00001.

当你这样调用时,
ptr1 = ptr.next();
其意义就是让ptr1的内容也是0x00001,也就是ptr1也指向了_next指象的对象.

如果ptr.next() = ptr1;
也就是0x00001 = ptr1;
这显示不能通过编译.

热点排行