|
|
|
динамический массив переменной длины
|
|||
|---|---|---|---|
|
#18+
Имеется класс базовый класс CPerson и его два производных класса: CMaster и CStudent. Необходимо создать массив из объектов CMaster и CStudent, длина которого будет изменятся по мере добавления или удаления элементов массива. У меня получилось создать массив переменной длины только из однородных объектов. Как это сделать для объектов из разных классов? int size_t = CPerson::GetPersonCounter(); CPerson* pTempPerson = new CPerson[size_t + 1]; for (int i = 0; i < size_t; i++) { pTempPerson = pPerson; } delete[] pPerson; pTempPerson[size_t].SetPersonInfo(szFirstName, szSurname, szCountry); pTempPerson[size_t].SetPersonID(size_t); pPerson = pTempPerson; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 11:05 |
|
||
|
динамический массив переменной длины
|
|||
|---|---|---|---|
|
#18+
Как это сделать для объектов из разных классов? Хранить в массиве не объекты, а указатели на них PS> а как массив подойдет класс std::vector из STL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 11:16 |
|
||
|
динамический массив переменной длины
|
|||
|---|---|---|---|
|
#18+
Как создать массив указателей на объекты, массив переменной длины Т.Е. если size - переменная, то CPerson* pTempPerson[size] - ошибка а CPerson* pTempPerson = new CPerson[size] - динамический массив объектов а как по другому???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 12:20 |
|
||
|
динамический массив переменной длины
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. это если С++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 12:23 |
|
||
|
динамический массив переменной длины
|
|||
|---|---|---|---|
|
#18+
STL это хорошо Но в данном случае пользоваться можно только простым массивом ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 13:52 |
|
||
|
динамический массив переменной длины
|
|||
|---|---|---|---|
|
#18+
без STL скучно, может стандартные классы VC++ использовать можно, кажется CTypedPtrArray? Если нет то придется писать свою обертку над массивами или по другому изощряться. В любом случае с указателями дело иметь проще. Если обертку над массивом, то что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. поиск и удаление элементов перебором. Если без массива, то можно все экземпляры класса СPerson связать в бесконечную цепь, где каждый экземпляр имеет указатель на следующий экземпляр, если указатель пустой, то это последний экземпляр. Код: plaintext 1. 2. 3. В статической переменной класса хранить указатель на начальный элемент. Хотя статическая переменная не пройдет если происходит наследование. Ну тогда опять писать класс-обертку. А вообще, не надо извращаться, вектор - самый гуманный способ, и для программиста и для языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 15:39 |
|
||
|
динамический массив переменной длины
|
|||
|---|---|---|---|
|
#18+
CPerson* pTempPerson = new CPerson[size] - динамический массив объектов а как по другому???? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 17:20 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=451&tid=2035145]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 315ms |

| 0 / 0 |
