Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
1

Возможно ли спрятать класс из области видимости?

15.08.2014, 08:45. Показов 1330. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

У меня есть технический класс, который используется только в одном другом классе, и при этом вышеозначенный технический класс нельзя упрятать в private, protected этого самого другого класса. Сходу решения не нашел.

Есть какие-либо идеи?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2014, 08:45
Ответы с готовыми решениями:

Области видимости
Если я запихиваю любые операции (в данном случае задание и заполнение массива); То далее не видит,...

Область видимости. один класс не видит другой класс
Добрый день! такая проблема. Есть базовый класс Q. От него наследуется 2 класса Р и G. Класс P...

Области видимости функций
Добрый день. Написал класс, помогите найти ошибки #include <iostream> #include <string>...

Области видимости в Builder
Совсем запутался с областью видимости описываю класс-в том же модуле из обработчика событий кнопки...

5
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
15.08.2014, 08:47 2
Цитата Сообщение от relationer Посмотреть сообщение
нельзя упрятать в private, protected этого самого другого класса
Почему, если он больше нигде не используется?

PS Определение утилитарного класса можно перенести в .cpp, где он непосредственно используется.
0
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
15.08.2014, 09:47  [ТС] 3
Утилитарный класс используется как база для шаблонного класса. Т. е. я не хочу, что бы было Class<T>::Base.
Реализацию вынести в cpp не получится - я пишу реализацию шаблона в hpp, отдельно выделив раздел, как будто бы включенный cpp файл.
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
15.08.2014, 10:03 4
Сложно что-то конкретное без контекста сказать.
Пока только возникает вопрос: если утилиарный класс является базой для единственного класса, почему он вообще выделен в базовый класс?

Или я чего-то не понимаю. Или нужен минимальный компилируемый пример кода (http://sscce.org/).
0
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
15.08.2014, 10:44  [ТС] 5
Единственный класс - шаблонный. Мне необходимо единое private static-поле на все классы, сгенерированные по шаблону.
0
18894 / 9852 / 2410
Регистрация: 30.01.2014
Сообщений: 17,295
15.08.2014, 12:09 6
Лучший ответ Сообщение было отмечено relationer как решение

Решение

relationer, обычно технические классы помещают в спец. пространства имен detail или impl. Этого чаще всего достаточно, чтобы показать, что класс не для внешнего использования.
Но если уж очень хочется прям совсем запретить, то можно так, например, поступить:
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
class impl_
{
    class InnerInvisible
    {
    protected:
        static int var;
    };
 
    template <typename T>
    friend class SomeWorker;
};
 
int impl_::InnerInvisible::var = 5;
 
template <typename T>
class SomeWorker : impl_::InnerInvisible
{
public:
    void foo()
    {
        std::cout << this->var << std::endl;
    }
};
 
int main()
{
    SomeWorker<int> s;
    s.foo();
}
Или просто запретить наследоваться и использовать этот класс всем, кроме SomeWorker (конструкторы и деструкторы в private, SomeWorker - шаблонный друг).


PS. ты бы сильно увеличил количество желающих тебе помочь, если бы все-таки показал хотя бы примерный код того, чего хочешь получить. Ведь не все тут телепаты
2
15.08.2014, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2014, 12:09
Помогаю со студенческими работами здесь

Области видимости переменных
Скорее всего тут все происходит от незнания. Приведу скрипт. var couchbase =...

Области видимости переменных
Когда последняя инструкция в foo присваивает новое значение переменной x, компилятор решает, что...

Области видимости объектов
Здравствуйте. Подскажите, пожалуйста, по каким правилам объекты в java видны или соответственно не...

Области видимости переменных, C#
Темный лес для меня эти области видимости, но разбираться надо, большую часть вроде разобрал, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru