不能引用在类Shape中定义的私有的数据成员呀
也就是说,你在类Shape中定义了某个私有的数据成员
你可能使用对象来引用了,你要知道,在类外是不可以直接引用
类的私有数据成员的,包括对象,只有他的成员函数可以直接引用私有数据成员的
当然会出现const的错误的啊,你是这样定义的
,形式参数const cylinder &),定义的是一个对长对常对象的引用啊
而你定义的是非const量的height
float height;
你试着把,height定义为const量看看
普通对象和常对象的区别:
常对象只可以调用常成员函数,不可以调用普通成员函数,但不能更新对象的数据成员
普通对象,可以调用常成员函数,也可以调用普通成员函数
我忘了是否是对数据成员也是这样的,不过如果还不能解决,你最好发代码上来
ps:我的解决方案就是在VC 的编译器里面 选择 project->settings->link->object/library modules 里面看下确保 如果是编译的是debug版本的话 用的是strmbasd.lib;release版本用的是strmbase.lib。我的这样就好了!
那个strmbase.lib库是要编译才会有的,下面给个连接,告诉你如何得到那个strmbase.lib库,然后才可以解决问题
http://zhidao.baidu.com/question/43531349.html?si=2
我是说把你的private修改成pulic,不是protected或者提供一个pulic的成员函数,明白呢吗?
至于你照书上写而编译器报错是因为你的编译器问题(不支持这种标准的c++方式,VC6.0对标准C++支持性不好,用g++编译就可以了)
error C2248: 'x' : cannot access private member declared in class 'Shape'
不能访问类Shape中的私有成员x.
解决方法:
1.将x设置成pulic
2.提供一个公有方法获取x
比如:int Getx(){return x;}
3.如果是在别的类访问可以用友元。