русский
Germany.ruForen → Архив Досок→ Programmierung

Чего они все же хотят?

30.11.07 22:13
Re: Чего они все же хотят?
 
AlexNek старожил
AlexNek
in Antwort Murr 29.11.07 23:37, Zuletzt geändert 30.11.07 22:17 (AlexNek)
\Жили же как-то несколько десятков лет без....
Да и без Интернета жили тоже поболе, А забери его счас от тебя....
Реализовать то можно, а зачем?
\Ну если написание и поддержка ап-то-дэйт одного "метода" через примитивный набор switch-case-case
Я тута по быстрому примерчик набросал, может и с ошибками, но как тест пойдет. Не знаю как это на С красиво сделать. Не только что бы работало, но и что бы любая обезъяна могла править и добавлять.
Может покажешь как твой волшебный свитч это все сдеалает. И что бы компайлер ругался когда четкую херню порешь. Типа b.Store в майне вызвать. И строки хочу прибавлять а += "Тест".
И "стреам" куда хочу. Да много еще чего . Правда виртуального наследования не прошу у золотой рыбки, тъфу котика.

class A
{
public:
A(string Name) {m_Name = Name}
virtual bool Compare(const a& Cmp) const = 0;
virtual string GetName() const {return m_Name; }
StoreToFile(string FileName)
{
...
Store(FileStream);
}

protected:
virtual stream& Store(stream& DataStream)
{
DataStream << m_Name;
return DataStream;
}

private:
string m_Name;
};
class B: public A
{
public:
B(string Name, int Code): A(Name), m_Code(Code) {}
static bool operator==(const B& Cmp1, const B& Cmp2 ) const
{
...
Ret = Cmp1.Compare(Cmp2);
...
}
virtual bool Compare(const a& Cmp) const
{
...
}
int GetCode() const {return m_Code; }
protected:
virtual stream& Store(stream& DataStream)
{
A::Store(DataStream);
DataStream << m_Code;
return DataStream;
}
public;
int m_Code;
};
class C: public B
{
....
virtual string GetName() const {... }
}
main()
{
A* pa = NULL;
B b("Test",1);
C c("Test","125");
pa = &c;
if(b == c)
{
....
x = pa->GetName();
}
}


 

Sprung zu