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

关于《effective C++》第三版书中P24-25页有1点疑问

2012-09-04 
关于《effective C++》第三版书中P24-25页有一点疑问受这本书的启发,我写了个小程序,打算照葫芦画瓢,但是程

关于《effective C++》第三版书中P24-25页有一点疑问
受这本书的启发,我写了个小程序,打算照葫芦画瓢,但是程序为什么不能通过运行啊?

C/C++ code
#include <iostream>using namespace std;class A{public:    A(int x1=0){x=x1;}    int& operator()( int a)    {        this->x=a;        return const_cast< int&>(static_cast<const A&>(*this));//这里我照抄了书中代码形式    }     friend ostream&operator<<(ostream&out,const A&a)     {         out<<a.x<<endl;         return out;     }private:    int x;};int main(int argc, char *argv[]){        const A a;//这里不要更改    a(10);//这里打算让非常成员函数调用常对象。    cout<<a;    cin.get();    cin.get();    return 0;}


[解决办法]
C/C++ code
// TestCpp.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>using namespace std;class A{public:    A(int x1=0){x=x1;}    int& operator()(int a) const    {        A &ref = const_cast<A&>(*this);        ref.x=a;        return reinterpret_cast<int&>(ref);    }     friend ostream&operator<<(ostream&out,const A&a)     {         out<<a.x<<endl;         return out;     }private:    int x;};int main(int argc, char *argv[]){        const A a;    a(10);    cout<<a;    cin.get();    cin.get();    return 0;} 

热点排行