|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.07.2011, 13:45 | #1 |
Форумчанин
Регистрация: 12.07.2011
Сообщений: 158
|
определить функцию
В файле ... .h есть класс Person. В этом классе есть функция void print().
В общим вот пример: файл h Код:
Файл cpp Код:
Последний раз редактировалось ACE Valery; 17.07.2011 в 14:30. |
16.07.2011, 14:51 | #2 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Ну так ведь вы уже реализовали данную функцию в хеадер файле...и теперь снова пытаетесь ее реализовать в файле реализации...Перенесите реализацию из хеадер файла в файл реализации и будет то, что вам нужно...
Код:
Код:
Будь проще и люди к тебе потянутся
Последний раз редактировалось spamer; 16.07.2011 в 14:53. |
16.07.2011, 15:44 | #3 |
Форумчанин
Регистрация: 12.07.2011
Сообщений: 158
|
В файле реализации у меня объявлен конструктор инициализации, а функция определена как показано в моём примере в конструкторе инициализации. ЭТО не правильно????? Функция должна быть объявлена за конструктором?
|
17.07.2011, 00:37 | #4 | |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
В C++ нет такого понятия, как "конструктор инициализации".
У вас объявлено два конструктора: по умолчания (без параметров), и конструктор с четырьмя параметрами. Цитата:
Никакой связи между объявлением конструкторов и функций нет. Можете определять их в любой последовательности. Ваша проблема в том, что функция Print() реализована в объявлении класса, т.е. в файле *.h, а потом вы снова пытаетесь ее реализовать в файле *.cpp, что делать, естественно, нельзя. Исправить это можно двумя способами: 1. В объявлении класса объявить только прототип функции, без реализации 2. Оставить реализацию в объявлении класса, и больше не пытаться ее реализовать в других местах. Надо сказать, что в таком случаи функция будет inline, но вам это сейчас не важно скорее всего. Пример, как реализовать один из вариантов, вам указали выше
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
|
17.07.2011, 05:53 | #5 |
Форумчанин
Регистрация: 12.07.2011
Сообщений: 158
|
Blade, Спасибо за такое подробное разъяснение. Теперь буду знать как определить функцию. И spamer-у спс за пример.
|
17.07.2011, 20:40 | #6 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Когда вы определяете тело функции в классе, то по умолчанию она становится встраиваемой.
Если вы хотите определить тело функции-члена класса вне класса, то надо сначала объявить эту функцию в классе, как вы это сделали с конструктором, а затем отдельно определить эту функцию вне класса в фале .cpp. Естественно в этот файл вам надо будет включить заголовочный файл, где дано объявление вашего класса. Кроме того, даже определяя функцию вне класса вы можете сделать ее встраиваемой, добавив перед именем функции ключевое слово inline. Кроме того, в определении функции вы можете сделать некоторые параметры, принимающие аргументы по умолчанию.
Со мной можно встретиться на www.clipper.borda.ru
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C#.Определить функцию, которая выясняет, пересекаются ли две фигуры | Tomogochi | Общие вопросы .NET | 12 | 26.10.2015 00:30 |
Определить функцию | Ksuxa | Помощь студентам | 6 | 02.09.2010 00:35 |
Как правильно объявить и определить функцию? | -ushёl- | Общие вопросы C/C++ | 0 | 14.06.2010 13:30 |
определить функцию для расчета периметра треугольника | Diplihe | Microsoft Office Word | 5 | 29.04.2010 05:21 |
Определить из наибольший общий делитель, используя функцию нахождения общего делителя. | Igomax | Помощь студентам | 6 | 23.05.2009 19:41 |