|
|
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
На с++ пишу буквально несколько дней, раньше с этим языком не сталкивался, поэтому не судите строго. Пишу программу, где используются классы и все это в h файле хранится. Вот в таком коде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 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. роде бы все логично, но получаю ошибку при компиляции [Linker error] undefined reference to `Point::~Point()' Подскажите что я не так делаю, а то времени совсем не осталось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 15:02 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Ну для начала сделайте деструктор виртуальным. :-) И покажите как производите сборку. -- There Ain't No Such Thing As A Free Lunch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 15:13 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
а можно поподробней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 15:16 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
поставил virtual перед деструктором, ошибка ушла, а из-за чего она была-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 15:18 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Если в классе есть хоть один виртуальный метод, деструктор всегда должен быть тоже виртуальным. Ошибка скорее всего ушла из за того, что компилятор не генерил для не виртуального деструктора какого-либо кода (он вроде как инлайн), и соотвественно линкер при сборке не находил этого кода, хотя вроде как код должен был быть (раз объект разрушается, то вызывается деструктор). Увидев что деструктор виртуальный, компилятор видимо таки сгенерил код под него и линкер его скушал. -- There Ain't No Such Thing As A Free Lunch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 15:36 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
спасибо большое, хоть понятней стало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 15:38 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
class Point: public GraphicObject { ^^^ Наследуйся всегда публично, по крайней мере до тех пор пока не узнаешь что такое приватное наследование и зачем оно нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 16:00 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
то есть надо еще public перед классом прописать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 16:01 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Zmiyто есть надо еще public перед классом прописать? Да. Иначе наследование будет приватное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 16:05 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 20:06 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Zmiyа как? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 15:06 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Zmiyа как? поверь, то время, которое ты потратишь на выяснение всякой х...ни ты бы после прочтения пары другой глав никогда не потратил, а оно потом бы окупилось за счет большей скорости разработки. В твоем случае нужно было попросить человека разбирающегося в языке написать эту прогу, если только это не секрет фирмы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 15:13 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
во первых, я сам нацчится хочу, а во вторых это в универе нада) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 15:46 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Zmiyво первых, я сам нацчится хочу, а во вторых это в универе нада) Это очень хорошее стремление. Я вот универов по С++ не заканчивал, сам учил, по книгам. Не скажу, что знаю в совершенстве, но для решения задач, которые я ставлю перед собой хватает. Неужели ты решил, что за 2 дня нахрапом освоишь хоть что-то, просто общаясь на форуме, пускай и специализированном. Я так понял, что ты знаешь другие языки и это помогает проводить тебе аналогии между ними и С, но если те языки, которые ты знаешь не содержат в себе таких понятий как указатели на области памяти, абстрактные и виртуальные классы, конструкторы и деструкторы, то, поверь, лучше последуй моему совету, а начальнику своему скажи, что он дебил, если заставил тебя выучить С за 2 дня. Я это говорю вовсе не потому, что мне жалко места на форуме или я такой му**к не знаю до кого докапаться, а потому, что желаю тебе освоить язык как можно безболезненно для тебя же, потому что знаю как это бывает, не понаслышке, когда приходиться менять один язык на другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 15:59 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Так начальник тут не причем вообще, проект преподу сдавать) А вот про классы разные действительно знаю маловато. Поэтому и решил схожую програмку с паскаля переписать на с++, сам язык то понятен в основах, а вот опыта никакого на нем. Ну все равно спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 18:01 |
|
||
|
Проблема с деструктором
|
|||
|---|---|---|---|
|
#18+
Деструктор не надо делать виртуальным. Его надо выкинуть вообще из класса Point. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 22:44 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33472011&tid=2032173]: |
0ms |
get settings: |
9ms |
get forum list: |
26ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
149ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 497ms |

| 0 / 0 |
