2015-08-06 8 views
0

Я пытаюсь реализовать шаблон проектирования Singleton в структуре данных кучи, но как я должен инициализировать следующую статическую переменную с именем root? Компилятор дает мне ошибкуКак инициализировать следующую статическую переменную?

ожидается инициализатор до того '*' маркер

class node 
{ 
    public: 
    node *lft,*rght; 
    static node* root; 
    node() 
    { 
     lft=NULL; 
     rght=NULL; 
    } 
    int val; 
} 

node* node::root=NULL; 
+9

У вас отсутствует '' 'после объявления класса. –

+2

Как может что-то вроде узла быть Singleton? Даже само определение класса признает существование нескольких экземпляров. –

+0

Я понял. Я применил синглтон в неправильной цели. –

ответ

0

Прежде всего ваш вопрос на самом деле не имеет особого смысла (одноплодной узел?)

You «Отсутствие точки с запятой после определения вашего класса.

Исследовательские синглэты, улучшайте свой дизайн, и я предлагаю вам создать одноэлементный NodeTree или что-то еще, если вы мертвы, используя дизайн синглтон. Узлы не должны быть одиночными, так как их будет больше одного.

+0

Дерево узлов также не должно быть Singleton. –

+0

Определенный NodeTree может быть синглом, но я согласен, что в целом их не должно быть. Я использовал фразу «мертвый набор» по какой-то причине. –

+0

Это не совсем так! Существуют хорошо определенные варианты использования двунаправленных списков 'head' в качестве Singleton (глобальная переменная). Например. мы сознательно занимаемся тем, что поддерживаем глобально доступный список потоков с нашим OSAL. –

Смежные вопросы