Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
1

Описать конструктор вложенного класса

22.05.2013, 01:18. Показов 2624. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем! пожалуйста объясните как правильно описать конструктор вложенного класса в .cpp и доступ к переменной (чтобы присвоить переменной pm_key NULL) вложенного класса ?

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
template<typename Key, typename Value>
class Dictionary
{
public:
    Dictionary();
    Dictionary(Key key, Value value);
    Dictionary(const Dictionary<Key, Value>& aDictionary);
    ~Dictionary();
    Dictionary<Key, Value>& operator =(const Dictionary<Key, Value>& aDictionary);
 
    int value_size(Key key);
    int key_size() const;
 
    void value_push_front(Key key, Value value);
    void value_insert(Key key, Value value, int index);
    void value_push_back(Key key, Value value);
 
    void value_pop_front(Key key);
    void value_remove(Key key, int index);
    void value_pop_back(Key key);
 
    void key_push_front(Key key);
    void key_insert(Key key, int index);
    void key_push_back(Key key);
 
    void key_pop_front();
    void key_remove(int index);
    void key_pop_back();
 
    void value_show(Key key, void visit(Value));
    void key_show(void visit(Key)) const;
private:
    struct Node_size
    {
        int count;
        Node_size* next;
    };
    struct Node_value
    {
        Value value;
        Node_value* next;
    };
    struct Node_key
    {
        Key key;
        Node_value* v_head, *v_tail;
        Node_size* s_head;
        Node_key* next;
    };
    Node_key* pm_head_key, *pm_tail_key;
    int m_size_key;
 
    Node_key* find_key(Key key);
    void all_remove_value(Node_key*& key);
    void copy(Node_key*& new_key, Node_key*& new_tail, const Dictionary<Key, Value>& aDictionary);
public:
    class iterator
    {
    public:
        iterator();
        iterator(Node_key* key);
    private:
        Node_key* pm_key;
    };
private:
    iterator m_iter_key;
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2013, 01:18
Ответы с готовыми решениями:

Конструктор класса не видит конструктор по умолчанию другого класса
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора...

Как вынести описание методов вложенного класса за пределы класса?
Подскажите, пожалуйста, как мне вынести описание методов вложенного класса за пределы класса?

Конструктор класса, конструктор копирования запускается не тот который нужен
Есть такой конструктор: Neuron::Neuron(int iType_activation_funk) { this-&gt;iType_act =...

Конструктор производного класса требует конструктор предка
Выдаёт вот такую вот ошибку: no matching function for call to 'Cube::Cube()' class Cube {...

4
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
22.05.2013, 01:58 2
Кликните здесь для просмотра всего текста

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
//*.h
template<typename Key, typename Value>
class Dictionary
{
class iterator
    {
    public:
        int i;
        iterator()
        {
            it = 0;
        };
        //iterator(Node_key* key);
        ~iterator(){};
    private:
        int it;
        //Node_key* pm_key;
    }    m_iter_key;
        Key  * pkey;
    Value* pvalue;
public:
    Dictionary(Key* pk, Value* pv):pkey(pk),pvalue(pv)
    {
        m_iter_key.i = 100500;
        x = 500100;
    };
    Dictionary()
    {
        m_iter_key.i = 100500;
        x = 500100;
    };
 
    ~Dictionary(){};
private:
 
    int x;
};
//*.cpp
//....
 int i = 0, x = 8888;
 Dictionary<int , int> ddd;
 Dictionary<int , int> ddd2(&i, &x);
//....
0
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
22.05.2013, 02:07  [ТС] 3
ssXXss, мне нужно чтобы описание конструктора вложенного класса было отдельно, т.е интерфейс класс в .h , а реализация класса в .cpp
вот код который написан отдельно, но почему компилято ругается
C++
1
2
3
4
5
template<typename Key, typename Value>
typename Dictionary<Key, Value>::iterator Dictionary<Key, Value>::iterator::iterator()
{
 
}
как правильно написать ?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.05.2013, 06:52 4
C++
1
2
3
4
5
template<typename Key, typename Value>
Dictionary<Key, Value>::iterator::iterator()
{
 
}
1
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
22.05.2013, 13:49 5
добавлю пару слов:
C++
1
2
3
4
5
template<typename Key, typename Value>
Dictionary<Key, Value>::iterator::iterator()
{
 
}
данную реализацию , можно вынести за определение шаблона ,но не дальше *.h файла (msvc , intel c++ не позволяют обратное) , но если использовать частичную специализацию то можно это дело обойти:
Кликните здесь для просмотра всего текста

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
//*.h
template<typename Key, typename Value>
class Dictionary
{
 
public:
    Dictionary()
    {
 
    };
    ~Dictionary(){};
class iterator
    {
    public:
        iterator(){};
        
        ~iterator(){};
    private:
        int x;
    };
 
private:
  iterator itr;
    
};
 
template<>class Dictionary<int,int>
{
public:
    Dictionary()
    {
 
    };
    ~Dictionary(){};
    class iterator
    {
    public:
        iterator();
 
        ~iterator(){};
    private:
        int x;
    };
 
private:
    iterator itr;
};
//*.cpp
Dictionary<int,int>::iterator::iterator()
{
    x = 5555;
}
1
22.05.2013, 13:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2013, 13:49
Помогаю со студенческими работами здесь

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО!
Друзья! Почему так? #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; //Вот...

Использование вложенного класса
Доброго времени суток. Решил подтянуть знания в базовых алгоритмах и структурах данных, а заодно...

Объявление объекта вложенного класса
Есть структура наподобие: template&lt;class T&gt; class A{ //...... public: class B { int dd;...

Вызов метода вложенного класса
class player { public: void showHp() { cout &lt;&lt;&quot;Health: &quot;&lt;&lt; hp&lt;&lt;endl; } void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru