Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
4194 / 1787 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
1

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

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

Можно ли инстанцирование класса прописать в самом классе?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2011, 08:27
Ответы с готовыми решениями:

Использование методов класса в самом классе
Вообще есть класс нужно объедение все его методы в один метод. Пример: class Test{ public:...

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

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

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

14
Делаю внезапно и красиво
Эксперт С++
1309 / 1224 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 16:40 2
Только статическое поле если.
1
Эксперт С++
1659 / 1031 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
14.04.2011, 19:31 3
Класс не может содержать сам себя в качестве члена, что очевидно. Исключением, как правильно заметил Deviaphan, являются статические члены, которые объявляются отдельно. Но содержать ссылку или указатель на тот же самый класс - можно. А откуда брать объекты, на которые будут ссылаться эти указатели, уже вопрос реализации.
1
4194 / 1787 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
20.04.2011, 08:16  [ТС] 4
Если член, то статик здесь и так напрашивается по задаче. Но может ли статик поле в качестве типа иметь сам класс, в котором объявлено? То есть допускается ли
C++
1
2
3
4
class A
{
 static A a;
};
? Кроме того, где у меня сказано, что это должен быть член?
0
Эксперт С++
2328 / 1701 / 148
Регистрация: 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
4194 / 1787 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
20.04.2011, 08:39  [ТС] 6
Кто такой синглетон?
0
Эксперт С++
2328 / 1701 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
20.04.2011, 08:42 7
Цитата Сообщение от taras atavin Посмотреть сообщение
Кто такой синглетон?
Гугл знает ответ. Википедия тоже.
1
4194 / 1787 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
20.04.2011, 08:43  [ТС] 8
Это:
Цель
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Существенно то, что можно пользоваться именно экземпляром класса, так как при этом во многих случаях становится доступной более широкая функциональность. Например, к описанным компонентам класса можно обращаться через интерфейс, если такая возможность поддерживается языком.
? Мне нужен минимум один объект, а не ровно один, причём, этот обязательный объект должен быть создан с применением private конструктора.
0
Эксперт С++
2328 / 1701 / 148
Регистрация: 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
Делаю внезапно и красиво
Эксперт С++
1309 / 1224 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
20.04.2011, 09:15 10
Цитата Сообщение от taras atavin Посмотреть сообщение
Но может ли статик поле в качестве типа иметь сам класс
Да. Не вижу препятствий.
1
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
268 / 170 / 11
Регистрация: 14.03.2010
Сообщений: 501
04.05.2011, 12:23 14
taras atavin, почему бы тогда не скомпилировать пару коротких строк вместо того, чтобы создавать подобные темы?
0
4194 / 1787 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
04.05.2011, 12:30  [ТС] 15
Потому что и сами строки приплыли отсюда. Ну не мог я сам догадаться про поле. И что тогда тестить?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2011, 12:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Можно ли вызывать метод из тестового класса в другом классе?
Если в общем, то суть вопроса такова: Есть два класса - Class1 и Class1Test. В классе Class1Test...

Можно ли вызывать метод из тестового класса в другом классе?
Если в общем, то суть вопроса такова: Есть два класса - Class1 и Class1Test. В классе Class1Test...

Правильно ли что объекту класса можно добавлять свойства неопределенные в классе?
Правильно ли что такой пример работает без ошибок? class Exam { } $e = new Exam();...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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