Кто поможет решить задачу?
>Кто поможет решить задачу?
>
>http://dnevnik.bigmir.net/comments.php?id=446165&cid=118469Дурацкое дело не хитрое. Задачка для лохов.
class Class
{
private:
Class() {}public:
static Class* newInstance()
{
return new Class();
}
};
>>Кто поможет решить задачу?
>>
>>http://dnevnik.bigmir.net/comments.php?id=446165&cid=118469
>
>Дурацкое дело не хитрое. Задачка для лохов.
>
>class Class
>{
>private:
> Class() {}
>
>public:
> static Class* newInstance()
> {
> return new Class();
> }
>};
Простите, но, используя ваш код, я не могу написать:int main()
{
Class c;
return 0;
}А это одно из требований.
>А это одно из требований.Дословно требования задачи:
Нужно создать такой тип Sealed, чтобы:
1. У него были public методы
2. Его экземпляр можно было создать
3. У его экземпляра можно было вызывать public методы
4. При попытке наследования (Derived) нельзя было создать экземпляр DerivedЗдесь не указано, каким образом должен создаваться экземпляр.
>>А это одно из требований.
>
>Дословно требования задачи:
>
>Нужно создать такой тип Sealed, чтобы:
>1. У него были public методы
>2. Его экземпляр можно было создать
>3. У его экземпляра можно было вызывать public методы
>4. При попытке наследования (Derived) нельзя было создать экземпляр Derived
>
>Здесь не указано, каким образом должен создаваться экземпляр.Ну хорошо, скажем так, вместо 2 пункта - его конструктор и деструктор был public.
Ну что, задача для лохов, простите, как вы выражаетесь, а никто решить не может?
>Ну что, задача для лохов, простите, как вы выражаетесь,
>а никто решить не может?Решение, точно соответствующее букве формулировки задачи, я Вам привёл.
Вариант с protected => private наследованием изящнее, но это лишь
означает, что решение не единственно.Собственно, практическая полезность конструкции sealed-класса сомнительна,
а потому и синтаксическое изящество - малополезно.
Кстати, я явно сказал, что нужен аналог C# sealed class. Если вы хоть немного знакомы с C#, то должны знать, что это обычный класс, от которого нельзя наследоваться, а не класс, создаваемый через фабрику.
>Если вы хоть немного знакомы с C#Чур меня, чур! Изыди, нечистое творение Билла!
Собеседование никто не прошел :-) А решение вот такое:class SealedBase
{
protected:
SealedBase() { }
virtual ~SealedBase() { }
};class Sealed : virtual private SealedBase
{
public:
Sealed() { }
virtual ~Sealed() { }
};Не решаемая задача - унаследоваться от класса Sealed, это, по сути, аналог C# sealed class.
Голь на выдумки хитра. Во всех смыслах:class SealedBase
{
protected:
SealedBase() { }
virtual ~SealedBase() { }
};class Sealed : virtual private SealedBase
{
public:
Sealed() { }
virtual ~Sealed() { }
};class Bastard : public Sealed, virtual public SealedBase
{
public:
Bastard()
: Sealed()
{}
};
int main()
{
Bastard bastard;
return 0;
}
>Голь на выдумки хитра. Во всех смыслах:
>
>class SealedBase
>{
>protected:
> SealedBase() { }
> virtual ~SealedBase() { }
>};
>
>class Sealed : virtual private SealedBase
>{
>public:
> Sealed() { }
> virtual ~Sealed() { }
>};
>
>class Bastard : public Sealed, virtual public SealedBase
>{
>public:
> Bastard()
> : Sealed()
> {}
>};
>
>
>int main()
>{
> Bastard bastard;
> return 0;
>}Сдесь у тебя получилось, а вот так, слабо? -
class SealedBase
{
friend class Sealed;private:
SealedBase() { }
virtual ~SealedBase() { }
};class Sealed : virtual private SealedBase
{
public:
Sealed() { }
virtual ~Sealed() { }
};Тут уж как бы ты на выдумки не был .... а ничего не выйдет :-)
Это ж надо так изголяться, чтобы из C++ сделать C#... :)Насчёт "а ничего не выйдет" - средствами языка может и не выйдет, но если очень захочется, то всё прекрасно получится...
Вопрос, зачем вообще это нужно?
>Сдесь у тебя получилось, а вот так, слабо? -Ура! Новый образец академического программирования!
Осталось только приложить формальное доказательство невозможности
наследования от Sealed, основанное на разложении контекстно-свободной
грамматики в нормальную форму Грейбах. :-)>Тут уж как бы ты на выдумки не был .... а ничего не выйдет :-)
А вот свиней мы с Вами на брудершафт не пасли. ;\
>Собеседование никто не прошел :-) А решение вот такое:Коту заняться не чем, так он ... ?!
ps: смысл этой игры с никами ?
>Коту заняться не чем, так он ... ?!
>
>ps: смысл этой игры с никами ?Старый Дедушка Маздай никакими другими никами на этом форуме не пользуется.
А то ведь и тараканов в голове нажить можно. ;)
>>Коту заняться не чем, так он ... ?!
>>
>>ps: смысл этой игры с никами ?
>
>Старый Дедушка Маздай никакими другими никами на этом форуме не пользуется.
>А то ведь и тараканов в голове нажить можно. ;)DeadMustdie ответ-то вопрошавшему. Ты к делу отношения, извени, не имеешь ;)