|
|
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
Для идентификации каждого экземпляра класса OList ввел статическую переменную mdbg, но при попытке использовать ее в конструкторе появились ошибки типа: Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 19:17 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
int OList::mdbg=0; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 19:48 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
Tubrik Код: plaintext 1. какая-то попытка шаблона? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 19:50 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
Дык Olist не шаблонный класс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 20:20 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
по моему надо инициализировать переменную ато как без етого сделать ++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 23:02 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
niknameДык Olist не шаблонный класс. Простите забыл добавить перед классом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2006, 12:46 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
Тогда, предположительно, нужно написать int Olist<MyClass>::mdbg=0; И лучше это сделать там же (в том же модуле), где первый раз инстанцируется Olist<MyClass> qqqq; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2006, 13:12 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
niknameТогда, предположительно, нужно написать int Olist<MyClass>::mdbg=0; И лучше это сделать там же (в том же модуле), где первый раз инстанцируется Olist<MyClass> qqqq; а если у меня несколько классов MyClass1, MyClass2, то как сколько же раз мне ее объявлять? int OList<MyClass1>::mdbg = 0; int OList<MyClass2>::mdbg = 0; и т.д. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2006, 13:21 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
Да. Шаблон инстанцируется столько раз, сколько вы пишете MyTemplate<ClassN>. Соответственно каждый из них требует свою статическую переменную. Если вам нужна одна на всех, то сделайте класс class MyDbg{ static int mydbg; }; template <class T>Olist{ MyDbg *m_debug; }; Если вы пронаследуете MyDbg, то окажетесь в той же ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2006, 13:26 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
Извините, уточню. Столько раз сколько разных классов в угловых скобках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2006, 13:41 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
Спасибо, думаю удобнее будет воспользоваться одним отдельным классом, как вы посоветовали. Но почему не работает int OList<class T>::mdbg = 0;, т.е. почему не выполняется подстановка компилятором самостоятельно, тем более, что само объявление: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2006, 14:52 |
|
||
|
Статическая переменная в классе
|
|||
|---|---|---|---|
|
#18+
Не знаю. Возможно - ошибка компилятора. Linker явно сказал о том, что он не нашёл такой класс, почему компилятор пропустил - не вполне понятно. Понятно! Компилятор ждал, что class Tag будет где-то инстанцирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2006, 14:56 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=331&tid=2030341]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 354ms |

| 0 / 0 |
