Форум программистов, компьютерный форум CyberForum.ru

Инициализация static члена класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Посчитать интеграл методом трапеций http://www.cyberforum.ru/cpp-beginners/thread1165270.html
нужно посчитать интеграл по формуле трапеции с точность e=0.001 и шагом n=10 \int_{0}^{\pi /2}\sqrt{1+sin^2(x)}dx \int_{a}^{b}f(x)dx=\frac{b-a}{2*(n-1)}*\left -формула трапеции
C++ Помогите переписать из Паскаля на С++ Помогите переписать из Паскаля на С++ var j,i:integer; N:integer; Max:real; a,b:real; Mas: array of real; begin write('Введите N ( N < 100):'); readln(N); write('Введите a:'); readln(a); http://www.cyberforum.ru/cpp-beginners/thread1165252.html
Динамическое подключение DLL C++
Здравствуйте! Скорее всего, мой вопрос покажется вам глупым, но всё же... Я не могу динамически подключить библиотеку. Когда подключаю статически, всё работает, функция выдает ответ и все счастливы. Но когда начинаю подключать статически, в момент вызова функции программа ломается, выдавая: Необработанное исключение по адресу 0x776B1A91 в DetCalcDynamic.exe: 0xC0000005: нарушение прав доступа при...
C++ Вычислить произведение квадратов тех элементов массива, для которых выполняется неравенство
Образовать массив с элементами akn = nfi +11 (k) + sin (x) fi +12 (n), где и - номер варианта, k, n = 1, 2, 3, ..., 10. Вывести его на экран в виде таблицы (матрицы) - Вычислить произведение квадратов тех элементов массива, для которых выполняется неравенство | аkn | <3.
C++ Вычислить сумму первых четырех отрицательных элементов http://www.cyberforum.ru/cpp-beginners/thread1165244.html
Образовать и вывести массив в с элементами yk = fi +10 (k), где i - номер варианта, k = 1, 2, ..., 10. Выполнить задачи вашего варианта. В случае отсутствия искомых данных вывести уведомления. - Вычислить сумму первых четырех отрицательных элементов.
C++ Чтение отдельных строк через поток Силами класса ifstream надо прочесть, например, 10 строку, затем результат присвоить переменной типа строка, и по отдельному символу присваивать значения отдельным переменным. Нужна помощь в плане подсказки - какие функции умеют проделывать подобные операции Добавлено через 2 часа 1 минуту я все еще жду предложений... подробнее

Показать сообщение отдельно
DrOffset
6422 / 3796 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
03.05.2014, 21:12     Инициализация static члена класса
pihta, один уточняющий вопрос. T из внешнего класса равно T из внутреннего или это разные T?
В любом случае этот код содержит ошибку. Если это один и тот же T, то смысл делать шаблонным внутренний класс Node отпадает. Если это разные T, то они должны иметь разные имена. И да, если компилятор из VS и он это собирает, то это только потому, что там не реализован two phase lookup.
Склоняясь к тому, что это один и тот же T, вот решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
template< typename T>
class RBTree
{
public:
    RBTree();
    ~RBTree();
 
    RBTree<T>& insert(const T&);
    void view() const;
 
private:
    class Node;
 
    Node *rootPtr;
 
    class Node
    {
        friend class RBTree;
        static Node * nilPtr; // как для вот этого вызвать...
 
    public:
        Node()              // ...вот этот конструктор?
        {
            parentPtr = leftPtr = rightPtr = this;
            key = 0;
            color = black;
        };
 
        Node(const T &value, colors clr)
        {
            parentPtr = leftPtr = rightPtr = nilPtr;
            key = value;
            color = clr;
        };
 
    private:
        T key;
        colors color;
        Node *parentPtr;
        Node *leftPtr;
        Node *rightPtr;
    };
 
    void leftRotate(Node *);
    void rightRotate(Node *);
    void insertFixup(Node *);
    void viewHelper(Node *, int) const;
};
 
// в hpp
template< typename T>
typename RBTree<T>::Node * RBTree<T>::Node::nilPtr = 0;
 
Текущее время: 01:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru