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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Зачем компилятору что-то упорядочивать после вычисления второго операнда логического "или"? http://www.cyberforum.ru/cpp-beginners/thread1242770.html
Стандарт: 5.15 Logical OR operator logical-or-expression: logical-and-expression logical-or -expression || logical-and-expression 1 The || operator groups left-to-right. The operands are both contextually converted to bool (Clause 4). It returns true if either of its operands is true, and false otherwise. Unlike |, || guarantees left-to-right evaluation; moreover, the second operand...
C++ Создать на базе класса с реализацией очереди клас потомок — кольцевая очередь Доброго времени суток. Я хотел создать на базе класса с реализацией очереди клас потомок - кольцевая очередь. Исходник: #include <iostream> #include <cstdlib> #include <time.h> using namespace std; class Queue{ protected: http://www.cyberforum.ru/cpp-beginners/thread1242736.html
C++ Как реализовать взаимодействие классов в игре "Змейка"
Всем привет. Я пишу змейку и у меня следующий вопрос. У меня есть несколько классов Game, Snake, Block, Food. Каждый класс в отдельном файле. Тело змейки состоит из блоков, следовательно нужен массив объектов класса Block, который будет обрабатываться в классе Snake, также начальные значения этого массива будут инициализироваться в классе Game. В Game также будут инициализироваться некоторые...
C++ Транспонирование матрицы - Проблема возникает в резервировании места под новую матрицу
Здравствуйте. Решаю классическую задачу. Страуструп в книге задал матричный вариант. А что если векторный? Например: 1 2 3 4 5 6 7 8 9 сделать так: 1 5 7 2 6 8 3 _ 9
C++ Одновременная блокировка/разблокировка функционала программы http://www.cyberforum.ru/cpp-beginners/thread1242703.html
Прошу прощения за столь изворотливый заголовок темы. Опишу суть проблемы. Разрабатываю программу для работы с электронными токенами. В программе присутствуют два потока: один предназначен для выполнения основного функционала (интерпретация команд пользователя), другой - для отслеживания событий в слотах. Функционал программы в отсутствие токена ограничен. Для контроля за функционалом я...
C++ Обобщенная функция перевода строки в число В книге "С++. Сборник рецептов" нашел обобщенную функцию преобразования строки в число: #include <iostream> #include <sstream> #include <conio.h> using namespace std; template<typename T> T strNum(const string& str) { подробнее

Показать сообщение отдельно
DrOffset
7089 / 4230 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
15.08.2014, 12:09
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. ты бы сильно увеличил количество желающих тебе помочь, если бы все-таки показал хотя бы примерный код того, чего хочешь получить. Ведь не все тут телепаты
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru