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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Можно ли инстанцирование класса прописать в самом классе? - C++

14.04.2011, 08:27. Просмотров 1228. Ответов 14
Метки нет (Все метки)

Можно ли инстанцирование класса прописать в самом классе?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 08:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли инстанцирование класса прописать в самом классе? (C++):

Что такое инстанцирование? - C++
class A { ... }; A a; // Это уже инстанцирование A?

Создание объекта класса в другом классе!!! - C++
//----------------------------------Address.h---------------------------------------------------- class Address { public: const...

В самом длинном слове строки исключить те гласные буквы, которые не встречаются в самом коротком ее слове. - C++ Builder
Помогите с программой плз. В самом длинном слове строки исключить те гласные буквы, которые не встречаются в его самом коротком слове.

Можно ли объявлять в описании одного класса объекты другого класса - C++ Builder
Здравствуйте! Помогите, пожалуйста, разобраться: я описал класс SignalZakon, а теперь хочу создать объекты этого класса (k, T1 и Т2) в...

MFC: 2 класса, невозможно объявить поле в классе 2 типа первого класса. - Visual C++
Подскажите, пожалуйста, в чем ошибка Есть 1 й класс: class time { int h; int m; }

Использование методов класса в самом классе - C++
Вообще есть класс нужно объедение все его методы в один метод. Пример: class Test{ public: int N; private: Test(){ ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 16:40 #2
Только статическое поле если.
1
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
14.04.2011, 19:31 #3
Класс не может содержать сам себя в качестве члена, что очевидно. Исключением, как правильно заметил Deviaphan, являются статические члены, которые объявляются отдельно. Но содержать ссылку или указатель на тот же самый класс - можно. А откуда брать объекты, на которые будут ссылаться эти указатели, уже вопрос реализации.
1
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.04.2011, 08:16  [ТС] #4
Если член, то статик здесь и так напрашивается по задаче. Но может ли статик поле в качестве типа иметь сам класс, в котором объявлено? То есть допускается ли
C++
1
2
3
4
class A
{
 static A a;
};
? Кроме того, где у меня сказано, что это должен быть член?
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.04.2011, 08:37 #5
taras atavin, про Singleton никогда не слышали?
C++
1
2
3
4
5
6
7
8
9
10
class Singleton {
public:
  static Singleton& getInstance() {
    static Singleton instance;
    return instance;
  }
 
private:
  Singleton() {}
};
Либо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Singleton {
public:
  static Singleton* getInstance() {
    if (instance == 0)
      instance = new Singleton();
 
    return instance;
  }
 
private:
  Singleton() {}
 
  static Singleton* instance;
};
 
Singleton* Singleton::instance = 0;
1
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.04.2011, 08:39  [ТС] #6
Кто такой синглетон?
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.04.2011, 08:42 #7
Цитата Сообщение от taras atavin Посмотреть сообщение
Кто такой синглетон?
Гугл знает ответ. Википедия тоже.
1
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.04.2011, 08:43  [ТС] #8
Это:
Цель
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Существенно то, что можно пользоваться именно экземпляром класса, так как при этом во многих случаях становится доступной более широкая функциональность. Например, к описанным компонентам класса можно обращаться через интерфейс, если такая возможность поддерживается языком.
? Мне нужен минимум один объект, а не ровно один, причём, этот обязательный объект должен быть создан с применением private конструктора.
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.04.2011, 08:46 #9
taras atavin, используйте фабричный метод:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <boost/shared_ptr.hpp>
 
class Creatable {
public:
  static boost::shared_ptr<Creatable> create() {
    return boost::shared_ptr<Creatable>(new Creatable());
  }
 
private:
  Creatable() {}
}
1
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
20.04.2011, 09:15 #10
Цитата Сообщение от taras atavin Посмотреть сообщение
Но может ли статик поле в качестве типа иметь сам класс
Да. Не вижу препятствий.
1
josy
1 / 1 / 0
Регистрация: 03.05.2011
Сообщений: 4
03.05.2011, 22:22 #11
Смотря что вы понимаете под инстанциацией. Если создание объекта, то можно, например с помощью автоматической (локальной) переменной в функции класса, оператора new. Или статической переменной внутри функции или статического члена класса (статический член того же типа что и класс, которому он принадлежит, вполне законен). Во всех случаях не имеет значения тип доступа к конструктору, ведь конструктор будет вызван самим классом, который имеет доступ в том числе и к приватным членам.
1
volovzi
04.05.2011, 12:07
  #12

Не по теме:

Чем больше читаю этот форум, тем больше меня поражает taras atavin.
Мало того, что он не умеет пользоваться поиском, так он ещё и программирует без компилятора О_о .

1
taras atavin
04.05.2011, 12:17  [ТС]
  #13

Не по теме:

volovzi, компил у меня есть, а не пользуюсь я средой.

0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.05.2011, 12:23 #14
taras atavin, почему бы тогда не скомпилировать пару коротких строк вместо того, чтобы создавать подобные темы?
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.05.2011, 12:30  [ТС] #15
Потому что и сами строки приплыли отсюда. Ну не мог я сам догадаться про поле. И что тогда тестить?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2011, 12:30
Привет! Вот еще темы с ответами:

В приведенном коде base может изменить значения членов базового класса в самом базовом классе - C#
using System; class a { public int x; public a() { x = 122; } } class b : a {public b() {base.x =...

Верно ли, что в самом многочисленном классе учится на 10 учеников больше, чем в самом малочисленном - C#
Известна численность каждого из 40 классов школы. Верно ли, что в самом многочисленном классе учится на 10 учеников больше, чем в самом...

Инстанцирование шаблонного класса - C++
Уважаемые форумчане! Помогите в не сложном, как я полагаю, для Вас вопросе. Имеется шаблонный класс-контейнер оформленный в виде модуля...

Можно прописать чтоб у класса выводились заголовки H2 - PHP
Можно в css прописать чтоб у класса выводились заголовки H2. Есть класс .current active (пункт меню) как прописать чтоб этот пункт...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.05.2011, 12:30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru