Если функция статическая, то на основании чего ты хочешь определять, какую вызвать? Как ты стал бы использовать сие чудо, если бы оно работало?
Hello, , you wrote:
> class Interface
> {
> public:
> virtual static bool Can() const = 0;
> };
> class CBase : public Interface
> {
> public:
> static bool Can() const;
> };
Обычные виртуальные функции — функции, поведение которых зависит от типа
объекта, для которого их вызывают. Как же вы собираетесь использовать
виртуальные статические функции, ведь статические функции вызываются не для
объекта, а для класса...
Возможно, то, что вам нужно — это патерн Singleton. Он позволяет при запуске
(или инициализации) программы, а может и отложенно, создавать единственный
экземпляр Объекта, реализующего некоторый интерфейс. А затем получать доступ к
этому единственному объекту через интерфейс.
> class Interface
> {
> public:
> virtual bool Can() const = 0;
> };
> class CBase : public Interface
> {
> public:
> bool Can() const;
> };
typedef Singleton<Interface> MySingleton;
int main()
{
MySingleton::instance()->Can();
}
Таким образом вы можете получитьэмуляцию статических виртуальных функций.
Как реализовать template class Singleton ? Читайте Gang Of Four или
воспользуйтесь поиском.
--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9