Форум программистов, компьютерный форум CyberForum.ru

Доступ к закрытым элементам класса - Вопрос - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Всё таки хочу снести отсебятину на тему размерных величин http://www.cyberforum.ru/cpp-beginners/thread386391.html
class TLenghtUnit { private: static TLenghtUnit *Base; double k1; double k2; TLenghtUnit *u; public: TLenghtUnit (TLenghtUnit &Unit, double k1, double k2) // Unit - ссылка на существующую величину. Декларация TLenghtUnit x(y, k1, k2) означает k1*x=k2*y. Потом придумаю, как лучше назвать параметры. {
C++ Составить частотный словарь вводимого текста Составить частотный словарь вводимого текста (несколько строк) тоесть распечатать строку следующим образом: справа от каждого слова-частоту, с которой оно встретилось. http://www.cyberforum.ru/cpp-beginners/thread386387.html
Исключения C++
Как бросить исключение выхода за границы массива? Как его поймать? Что делать после отбрасывания? TItem & TArray::operator (unsigned int index) { if {Index>NumberOfData} { //Что сдесь надо написать? } else {
Классы. Доступ к созданному объекту. C++
Доброе утро, форум.:friends: Имеется код, чисто для примера. файл book.h #ifndef BOOK_H #define BOOK_H struct Book {
C++ Для чего нужна функция errno_t err? http://www.cyberforum.ru/cpp-beginners/thread386365.html
Почему в Visual C++ 5.0 нужно вводить не FILE *fp; fp = fopen("File" , "w"); ,а FILE *fp; errno_t err; err = fopen_s(&fp, "File" , "w"); ?
C++ Работа со списками (через класс). Скажите, в чем ошибка. Доброго времени суток. Я написал программу, просмотрите, пожалуйста. В общем нужно реализовать класс, выполняющий следующие функции: 1. Добавление элемента в начало списка 2. Добавление элемента в конец списка 3. Включение элемента в середину списка, после элемента с определенным идентификатором 4. Удаление элемента по его идентификатору 5. Замена двух соседних элементов списка. 6.... подробнее

Показать сообщение отдельно
Bers
Заблокирован
18.11.2011, 10:49     Доступ к закрытым элементам класса - Вопрос
Цитата Сообщение от dimcoder Посмотреть сообщение
Ы Можно ли оградить каждый объект класса такими же заборами? Догадываюсь что нет.
Можно ли оградить объект от знания об устройстве других объектов своего же класса?
Можно. Только это - идиотизмом попахивает.

Добавлено через 2 минуты
Цитата Сообщение от dimcoder Посмотреть сообщение
Приватные методы - это что не одно и то же что и методы в приватной зоне.
Это одно и тоже.

Но вообще, я подумал, что у вас какие то свои понятия просто имеются. Что бы убедится, что мы понимаем друг друга правильно, давайте уточним:

Что такое по вашему "приватный метод" ?
Что такое по вашему "метод, который находится в приватной зоне" ?

В чем между ними принципиальное различие?

Добавлено через 6 минут
Ниже представлен код с пояснением в комментариях.

Во втором случае класс "отказывается" выполнять приведение типов.
Технически он "может" и даже "умеет". Но на деле - отказывается это сделать.

Тот, кто поймёт почему - тот поймёт, что такое инкапсуляция.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
struct sData { int a,b; };
 
struct CTest:public sData 
{ 
    CTest():sData(){} 
};
 
struct CTest1:protected sData 
{ 
    CTest1():sData(){} 
};
 
int main()
{
    CTest test;
    CTest1 test2;
 
    //1 Случай.
    //приведение в стиле си
    sData temp = (sData) test;  //работает
    
    //приведение в стиле с++
    sData temp1 =  static_cast<sData>(test); //работает
 
 
    //2 Случай.
    //приведение в стиле си
    sData temp3 = (sData) test2; //ошибка компиляции
    
    //приведение в стиле с++
    sData temp4 =  static_cast<sData>(test2); ////ошибка компиляции
 
    //error C2243: приведение типов: 
    //преобразование "CTest1 *" в "const sData &" существует, но недоступно
    
   return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru