|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.01.2010, 13:11 | #1 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Передача ссылки в функцию класса на данный класс
Доброго времени суток уважаемые эксперты. Для начала поздравляю всех с праздниками.
Ну а теперь к делу. Необходимо передать в функцию класса ссылку на другую переменную такого же класса (сам бы никогда не понял что тут написал). Собственно вот так: Код:
Код:
Код:
Код:
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
09.01.2010, 14:37 | #2 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
в функцию Create передается константная ссылка на обьект, а внутри этой ф-ии у этого обьекта вызывается неконстантная функция:
if (PredLayer.GetCount() != 0) Чтобы это вылечить, надо ф-ию GetCount обьявить константной: void Create(int,const CNeuronLayer &) const; Судя по второй ошибке (ошибка линковки) нигде не определена сама ф-ия GetCount. Ее надо определить. Последний раз редактировалось _Ч_; 09.01.2010 в 14:41. |
09.01.2010, 14:45 | #3 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
this->kolNeuron и this->neuron[i] - вот тут this-> можно не писать.
Плюс ко всему вероятны еще утечки памяти. Сам класс как-то криво сделан. Но это уже другая история Последний раз редактировалось _Ч_; 09.01.2010 в 14:47. |
09.01.2010, 15:04 | #4 | |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Цитата:
Все с этим разобрался - все замечательно заработало. А можно уточнить почему тут будет утечка памяти и почему класс криво написан (хочется все же правильно написать)
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
|
09.01.2010, 15:15 | #5 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
нет. это не опечатка. ф-ия Create изменяет состояние обьекта (this->kolNeuron = KolNeuron) поэтому она не может быть константной. константкая именно GetCount
|
09.01.2010, 15:24 | #6 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Я это знаю, просто вы написали Create(int,const CNeuronLayer &) const; а не GetCount() const;. Но не в этом дело. С этой своей ошибкой я уже справился. Хотелось бы все таки узнать: в каком месте произойдет утечка памяти?
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
09.01.2010, 15:25 | #7 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
зачем ф-ии void CNeuronLayer::Create(int KolNeuron,const CNeuronLayer &PredLayer) нужен const CNeuronLayer &PredLayer? чтобы позвать у него GetCount()? почему просто нельзя передвать это количество. (тут была глупость. удалил :-) )
Счетчики обьектов должны имень беззнаковый тип (unsigned например). Ведь количество обьектов не может быть отрицательным. Это лишь вершина айсберга. Чтобы написать правильно класс надо сперва описать для чего он нужен, что он делает. А так я вижу что он кривой, но как его сделать правильным я не знаю потому что не знаю для чего он. Про утечку: Что будет если два раза позвать ф-ию Create? правильно, будет утечка. А что будет если я скопирую один обьект CNeuronLayer в другой? Если деструктор написан правильно, то потом может случится трындец. Последний раз редактировалось _Ч_; 09.01.2010 в 15:53. |
09.01.2010, 15:26 | #8 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
Упс. void Create(int,const CNeuronLayer &) const; - да, это опечатка
|
09.01.2010, 15:53 | #9 | ||||
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Цитата:
Цитата:
Цитата:
Простите если ввел в заблуждения не приведя реализацию CNeuron Цитата:
Может есть еще какие-нибудь замечания?
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
||||
09.01.2010, 15:57 | #10 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
ок. подумайте пока над этим:
Про утечку: Что будет если два раза позвать ф-ию Create? правильно, будет утечка. А что будет если я скопирую один обьект CNeuronLayer в другой? Если деструктор написан правильно, то потом может случится трындец. Я пока остальное не осилил. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перенос данных из класса в класс | zexak | Общие вопросы по Java, Java SE, Kotlin | 2 | 27.02.2010 20:03 |
Си++. Передача массива в функцию. | Diamond2107 | Помощь студентам | 7 | 03.12.2009 20:15 |
Передача массива в функцию | D[I]K | Общие вопросы C/C++ | 4 | 13.09.2009 21:31 |
передача массива в функцию | JOFRIF | Общие вопросы C/C++ | 8 | 02.08.2009 12:46 |
Передача массива в функцию | Vistar | Общие вопросы C/C++ | 1 | 27.04.2009 08:08 |