Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.155.88] |
|
Сообщ.
#1
,
|
|
|
Помогите пожалуйста сделать задание. Знаю что, может быть, оно не сложное, и я с удовольствием разобрался бы сам, но совершенно нет времени.
Вот задание: Дополните класс X таким образом, чтобы приведенный ниже фрагмент работал корректно. Если какие-либо некорректности никаким образом исправить нельзя - отметить: class X{ int m_ar[5]; ... }; void main() { int ar[] = {1,2,3,4,5,6,7,8,9,10}; X x(ar, sizeof(ar)/sizeof(int));//элементы массива m_ar должны //стать копиями соответствующих элементов массива ar X x1; X x2(); int* p = new int[3]; //формируются значения элементов... X x4(p,3); } Windows XP, VS2003 |
Сообщ.
#2
,
|
|
|
class X{ int m_ar[5]; X() { memset( m_ar, 0, sizeof( m_ar ) ); } X( int* input, int n ) { for( int i = 0; i < n && i < 5 ; i++ ) { m_ar[i] = input[i]; } } ... }; продолжение следует Добавлено ..чего то не хватает, не могу понять - чего... спать уже пора |
Сообщ.
#3
,
|
|
|
Спасибо
|
Сообщ.
#4
,
|
|
|
Надобы
class X{ int m_ar[5]; public: ... не хватет еще освобождения памяти из-под p, но, боюсь, дополнением класса X это не исправить. |
Сообщ.
#5
,
|
|
|
ну да, не исправить.
На самом деле можно было бы в деструкторе удалять m_ar, но это было бы чревато - мы бы отгребли при попытке удалить стековый массив (конечно, можно это как то разрулить на уровне ОС или CRT, но 1) это нестандарт, 2) это не С++ |
Сообщ.
#6
,
|
|
|
Цитата BugHunter @ ну да, не исправить. delete [] input; либо Цитата -ra- @ Если какие-либо некорректности никаким образом исправить нельзя - отметить: |