|
|
|
Опять про вектор
|
|||
|---|---|---|---|
|
#18+
Нужно создать вектор экземпляров класса. Компилятор выдает такую ошибку: [C++ Error] module.cpp(87): E2285 Could not find a match for 'vector<MFunction,allocator<MFunction> >::push_back(MFunction *)' Код: plaintext 1. 2. 3. 4. 5. 6. MFunction -класс, конструктор имеет 2-а параметра. Что делать подскажите Нужно ли использовать деструктор после каждого использования экземпляра temp. sos............... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 23:28 |
|
||
|
Опять про вектор
|
|||
|---|---|---|---|
|
#18+
dimadvНужно создать вектор экземпляров класса. Компилятор выдает такую ошибку: [C++ Error] module.cpp(87): E2285 Could not find a match for 'vector<MFunction,allocator<MFunction> >::push_back(MFunction *)' Код: plaintext 1. 2. 3. 4. 5. 6. sos............... Объявлен вектор объектов класса MFunction, а пишется в него указатель: MFunction *temp, поэтому и ошибка. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 07:16 |
|
||
|
Опять про вектор
|
|||
|---|---|---|---|
|
#18+
И зачем вообще заморачиваться с динамическим выделением памяти (в приведенном коде memory leak, между прочим), если можно сделать проще: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Или даже так: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 07:25 |
|
||
|
Опять про вектор
|
|||
|---|---|---|---|
|
#18+
Тогда возникает еще 2-е ошибки и открывается фаил _vector.h с указанием на следующую строку: Код: plaintext Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 09:17 |
|
||
|
Опять про вектор
|
|||
|---|---|---|---|
|
#18+
dimadvТогда возникает еще 2-е ошибки и открывается фаил _vector.h с указанием на следующую строку: ... Без исходника целиком трудно определить точную причину, но скорее всего для класса MFunction не определен конструктор по умолчанию (без параметров который). Из-за чего не получается скомпилировать строку Код: plaintext 1. так как тут создается вектор определенной длины и элементы в нем надо как-то проинициализировать. Выхода два: либо определить конструктор по умолчанию. Либо (если так сделать нельзя) просто заменить эту строчку на Код: plaintext 1. И будет даже правильней, потому что в исходном примере на самом деле что делается - создается вектор размером koef.size(). Потом в него методом push_back дописываются элементы. В результате поимеем вектор размером в два раза больше необходимого, у которого первая половина будет заполнена "пустыми" значениями. Если вы хотите избежать перевыделений памяти и для этого сразу создаете вектор нужного размера, то либо заносите туда значения через f = (то что надо), либо как вам уже в одном топике посоветовали, воспользуйтесь методом reseve: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 09:50 |
|
||
|
Опять про вектор
|
|||
|---|---|---|---|
|
#18+
Из-за особенностей тегов форматирования, перекосило предпоследнюю строчку. Читать так: Если вы хотите избежать перевыделений памяти и для этого сразу создаете вектор нужного размера, то либо заносите туда значения через f[ i ] = (то что надо); либо как вам уже в одном топике посоветовали, воспользуйтесь методом reseve: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 09:54 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33640263&tid=2031618]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 200ms |
| total: | 367ms |

| 0 / 0 |
