代码如下:
#include <iostream.h>
class dataclass
{
private:
int DataMember;
public:
dataclass(int value);
int PublicDataMember;
int PublicMethod(void);
};
int dataclass::PublicMethod(void)
{
return DataMember;}dataclass::dataclass(int value)
{
DataMember=value;
}void main()
{
dataclass dataObject(1);
dataObject.DataMember=2;
cout<<"dataObject.DataMember ="<<dataObject.DataMember <<"\n";
cout<<"dataObject.PrivateDataMenber="<<dataObject.PublicMethod()<<"\n";}编译的时候,出错,错误提示如下
--------------------Configuration: Classes - Win32 Debug--------------------
Compiling...
Classes.cpp
D:\vc\Class\Classes.cpp(25) : error C2248: 'DataMember' : cannot access private member declared in class 'dataclass'
        D:\vc\Class\Classes.cpp(5) : see declaration of 'DataMember'
D:\vc\Class\Classes.cpp(26) : error C2248: 'DataMember' : cannot access private member declared in class 'dataclass'
        D:\vc\Class\Classes.cpp(5) : see declaration of 'DataMember'
执行 cl.exe 时出错.Classes.exe - 1 error(s), 0 warning(s)我看了,好像是说没有定义私有变量DataMember,导致在后面的Main里找不到这个变量,可是
private:
int DataMember;
在这里有定义了呀,我把Private改成Publice就没问题了,私有变量是这么定义的呀请大家帮忙,我错在哪里?新手,还望大家指点!谢谢谢谢

解决方案 »

  1.   

    变量访问控制权限问题:private变量只能在类中或被类的成员函数访问,在类外是不能访问的;public变量在程序的任何地方都可以访问,protected变量可以在类中,成员函数,或该类的子类访问。DataMember为私有变量,故在main函数中是不能访问的。
      

  2.   

    建议先看看类中各种成员的访问属性,private在类外是不能直接访问的,要不然那还叫什么封装啊,编译器死掉是很正常的。
    估计楼主也是用的VC6.0要不然你写void main都通不过的,应该写成int main
    这是vc6的bug,以前经常遇到,换2005吧还蛮好用的.