Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > В чем ошибка?


Автор: FrAcTaL_life 17.11.2003, 20:19
Написал на Visual C++6 такую вот фишку:
---------------------------------------------------

Код

//class.cpp
#include <iostream.h>

class DataClass {
private:
     //видимость PrivateDateMember ограничена классом
int PrivateDataMember;

public:
DataClass(int value);//объявление конструктора класса
      //конструктор автом. выполняется при создании объекта данного класса
      //значение получаемое констр. должно быть присвоено PrivateDateMember
      //---------------------------------

      //к переменной PublicDateMember обращение с любого места программы
int PublicDataMember;//объявление переменной с именем PublicDateMember
int PublicMethod(void);//объявление метода(функция принадлежащая классу)
};
//******************************************************************
//определяем конструктор
DataClass::DataClass(int value)
{
//сохраняем переданную величину в PrivateDateMember
PrivateDataMember=value;

}

//*******************************************************************
//отделим определение метода от объявления класса
int DataClass::PublicMethod(void)
//пусть метод возвращает значение переменной PrivateDateMember
{
return PrivateDataMember;
}
//*******************************************************************

void main(){
//объявляем объект класса DataClass
//и одновременно с этим передадим значение конструктору класса(оно будет присвоено PrivateDateMember)

DataClass DataObject(1);
DataObject.PublicDataMember=2;
cout<<"DataObject.PublicDateMember = " <<DataObject.PublicDataMember<<"\n";
cout<<"DataObject.PrivateDateMember = "<<DataObject.PrivateDataMember<<"\n";
}


-------------------------------------------------

Код

--------------------Configuration: classes - Win32 Debug--------------------
Compiling...
classes.cpp
D:\Project\Visual C++\classes\classes.cpp(43) : error C2248: 'PrivateDataMember' : cannot access private member declared in class 'DataClass'
       D:\Project\Visual C++\classes\classes.cpp(6) : see declaration of 'PrivateDataMember'
Error executing cl.exe.

classes.exe - 1 error(s), 0 warning(s)


=====================================

В чем ошибка? Что то с определением локальной переменной?

Автор: RAN 17.11.2003, 21:37
Цитата
видимость PrivateDateMember ограничена классом

Это значит, что переменную можно использовать только в методах класса, как у тебя в функции int DataClass::PublicMethod(void)

Цитата
cout<<"DataObject.PrivateDateMember = "<<DataObject.PrivateDataMember<<"\n";

это попытка достучаться из вне. Это и есть ошибка. Исходя из логики созданного тобой класса надо исправить на
Цитата
cout<<"DataObject.PrivateDateMember = "<<DataObject.PublicMethod()<<"\n";

Автор: FrAcTaL_life 17.11.2003, 21:53
RANАга
Все получилось...
Спасибо smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)