读书人

关于《effective C++》第三版书中P24-

发布时间: 2012-09-04 14:19:30 作者: rapoo

关于《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;} 

读书人网 >C++

热点推荐