|
Страници по тази тема: 1 | 2 | 3 | 4 | >> (покажи всички)
Тема
|
C++ мизерии
|
|
Автор |
zaphod (void *lpNothing) |
Публикувано | 15.09.06 13:54 |
|
значи имам клас, вътрешен за друг клас (да го означим А::В), декларирани в хедър Н. в друг хедър, да го наречем Х, който не инклудва Н искам да декларирам указател към А::В. ако беше само към А, проблем няма - просто пиша нейде отпреде class A; и си декларирам указатели на корем (но не и инстанции). обаче номера просто не минава за вътрешен клас. инклудването на хедъра Н в Х е решение, но е нежелателно, понеже Х е ползван в много файлове, и всяка промяна в Н ще доведе до ненужна прекомпилация на всичките тях. с class AB в Х и typedef А::В АВ в Н също не става - щом види class AB, компилатора очаква истински клас АВ, а не предефиниран тип. изкарването на клас В като външен също ще реши проблема, но е нежелателно, понеже не искам заради подобни глупости да развалям структурата на проекта и да си пълня уъткспейса с мизерни ефрейторски класчета.
някакви идеи?
NE SUTOR ULTRA CREPIDAM
| |
Тема
|
Re: C++ мизерии
[re: zaphod]
|
|
Автор | mamaligabg (Нерегистриран) |
Публикувано | 15.09.06 14:09 |
|
май не може да предекларираш вътрешен клас
имаше някъде в нета много подробна статиика по този въпрос, ама не се сещам как я намерих.
| |
Тема
|
намерих я
[re: mamaligabg]
|
|
Автор | mamaligabg (Нерегистриран) |
Публикувано | 15.09.06 14:22 |
|
http://www.goingware.com/tips/parameters/notrequired.html
цитат от нея
"Unfortunately this does not work to declare a member class (also known as a nested class) as an incomplete type even though the syntax for using them is similar - you can reopen a namespace but not a class."
| |
Тема
|
Re: намерих я
[re: mamaligabg]
|
|
Автор | zaphod (Нерегистриран) |
Публикувано | 15.09.06 20:42 |
|
ха, учудва ме че неймспейса може да се преотваря. както и да е, аз се примрих вече. сложих void* вместо A::B* и после каствах където трябва. за щастие не е на много места - 5 или 6. но се надявах за някаква хитрина, щото не винаги мога да се измъкна с void*.
| |
Тема
|
Re: C++ мизерии
[re: zaphod]
|
|
Автор | Пeнчo (Нерегистриран) |
Публикувано | 15.09.06 21:04 |
|
Само от любопитство, защо трябва да е вложен клас?
| |
|
не съм сигурен че заради избягването на един хедър си заслужава да правиш това с void*. ама ти си знаеш :P
Редактирано от mamaligabg на 15.09.06 21:14.
| |
Тема
|
Re: C++ мизерии
[re: Пeнчo]
|
|
Автор | zaphod (Нерегистриран) |
Публикувано | 15.09.06 22:18 |
|
щото му е малък пагона за да се нареди барабар с воеводите.
| |
Тема
|
Re: намерих я
[re: mamaligabg]
|
|
Автор | zaphod (Нерегистриран) |
Публикувано | 15.09.06 22:22 |
|
бе честно казано за пръв път го правя. досега си инклудвах хедерите, ама нещо зех да се дразня, когато чакам по 2 минути компилация. вече взех да оптимизирам от към време за компилация...
| |
|
на мене ми се струва, че точно със структурата имаш проблеми
смисъла на вътрешния клас е да не се вижда отвънка или го изкарай като отделен или го направи базов
| |
Тема
|
Re: C++ мизерии
[re: ~!@$%^amp;*()_+]
|
|
Автор | zaphod (Нерегистриран) |
Публикувано | 16.09.06 09:47 |
|
смисъла на вътрешния клас е да не се вижда отвънка или го изкарай като отделен или го направи базов
ако това беше смисъла, нямаше да се вижда въобще, не мислиш ли? но даже да е така, и виждането навън да е следствие просто на това че писачите на компилатори са решили че не си струва да се пише код за да се закрива, щото така и така няма идиот който да почне да го ползва, то аз си държа на концепцията и ще продължавам все така. не си ли чувал "ефекта е в дефекта"? този "дефект" на компилаторите - че се виждат отвън вътрешните класове, е всъщност мощно средство за формиране на добре подреден проект, който като го отвориш във воркспейса, въобще не прави вертикален скролер и се обхваща в поглед.
| |
|
Страници по тази тема: 1 | 2 | 3 | 4 | >> (покажи всички)
|
|
|