Вы сами то поняли, чего написали?Оксалайя писал(а):Ну так первый раз вызовите этот конструктор как открытый, а второй раз - как закрытый. Это называется конструктор Шредингера, поищите у Шилдта.
Как запретить повторное использование конструктора?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ладно. А можно сделать, чтоб один конструктор контруировал "обычный" сингилтон, а второй - обычный объект?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Я очень сомневаюсь, что по данным и по коду два класса должны быть идентичными. Снова интуиция. Какие-то методы точно будет вырожденными либо у эталона, либо у экземпляра. К тому же в коде ты в любом случае в некоторых местах сейчас вынужден определять был ли вызван метод для экземпляра, либо для эталона, используя конструкцию типа:
После разнесения на отдельные классы такие условия пропадут и как раз дадут разницу в коде методов между двумя классами.
Все же общие данные и методы, напоминаю, следует вынести в базовый класс дабы устранить дублирования. Это будет самым правильным решением.
А конструктор Шредингера не удалось найти у Шилдта? Он бы очень помог решить данную проблему куда более простым методом неопределённости
Код: Выделить всё
if (m_pParent != NULL)
{
...
}
Все же общие данные и методы, напоминаю, следует вынести в базовый класс дабы устранить дублирования. Это будет самым правильным решением.
А конструктор Шредингера не удалось найти у Шилдта? Он бы очень помог решить данную проблему куда более простым методом неопределённости

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Сионист писал(а):Вы сами то поняли, чего написали?
Подобный вопрос хочется задать Вам после каждого Вашего поста, хотя ответ, в принципе, очевиден.
Вы поискать у Шилдта попробовали или сразу пословоблудить решили?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Ты сам-то понял, что написал?Сионист писал(а):Ладно. А можно сделать, чтоб один конструктор контруировал "обычный" сингилтон, а второй - обычный объект?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Их вообще не может быть два. Это один класс.Romeo писал(а):Я очень сомневаюсь, что по данным и по коду два класса должны быть идентичными.
Тогда он не может быть эталоном. Вообще нет выраженного эталона, есть лишь объект, назначенный базовым. Любые два экземпляра не имеют смысла вне их отношения, при этом ни один нельзя выделить по каким либо объективным признакам. Класс знает все свои экземпляры и порядок их создания. Можно сделать, чтоб если объект создаётся не первым и для этого используется конструктор без ссылки, то чтоб он располагался по адресу первого?Romeo писал(а):Снова интуиция. Какие-то методы точно будет вырожденными либо у эталона, либо у экземпляра.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
А Вы разве нет?Romeo писал(а):Ты сам-то понял, что написал?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Сионист писал(а):А Вы разве нет?
Вы знакомы с понятием "сарказм"? У Шилдта оно, к сожалению, не описано, но толковый словарь тоже подойдёт.
Элементарнейшая же логика. Пусть объект B определён через отличие от объекта A и их класс таков, что при наличии обоих объектов ни B, ни A не имеют смысла вне их отношения. Пусть над объектом B можно выполнить некую операцию, возможно составную. Тогда, так как известно отличие B от A и так как оба объекта на столько абстрактны, что вне отношения между ними вообще теряют всякий смысл, то можно учесть различие между объектами и выполнить ту же операцию над объектом A и она будет иметь тот же смысл. Но если известно отличие B от A, то известно и отличие A от B. Они не могут различаться ни одним методом, ни одним оператором-членом и у них вообще нет ни каких полей кроме тех, которые используются для задания парных отношений, а всякое такое поле можно с обратным значением отнести к другому объекту пары объектов, для которых задано отношение. Минимум в одно отношение непосредственно войдут "эталон" и ещё один объект.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Слушай, ты можешь рассказать, чего именно тебе нужно добиться, а не описывать ту архитектуру, которую ты уже успел навернуть? Мне уже очевидно, что архитектура неоправданно изощрена и ущербна. Расскажи, чего нужно добиться и давай придумаем вместе, как всё должно выглядеть. В правильной архитектуре всех этих надуманных проблем просто не будет. В том числе статических методов, знающих о всех объектах.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.