Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/104: Рейтинг темы: голосов - 104, средняя оценка - 4.69
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102

Определение методов класса

08.03.2013, 15:26. Показов 19726. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток,
Такой вопрос возник:
В заголовочном файле (head.h) я объявил класс
C++
1
2
3
4
5
6
7
8
9
using namespace std;
class integer
    {
    private:
        int num;
    public:
        int division();
        integer();
    };
а в файле method.cpp мне нужно расписать тела функции division() и конструктора integer()
соответственно в файле method.cpp я пишу
C++
1
2
3
4
int integer::division()
    {
      
    }
и он ругается вот так:
1 IntelliSense: имя, за которым следует выражение "::", должно определять класс или пространство имен

где я ошибся?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2013, 15:26
Ответы с готовыми решениями:

Определение методов шаблонного класса
Столкнулся с такой проблемой, реализовываю итератор для шаблонного списка, при определении метода интератора вылетает ошибка вот лог : ...

Определение методов вне класса
Определение методов вне класса используется только для того, чтобы не вносить беспорядок или есть еще какая- то причина?

Определение методов шаблонного класса в файле реализации
Доброго времени суток, форумчане! :) Поздравляю всех мужчин с праздником. Желаю быть мужественными, стойкими, рассудительными и...

11
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
08.03.2013, 15:39
0. НИКОГДА не пишите using namespace ...; в заголовочных файлах.

1. #include "head.h" в method.cpp есть?
0
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
08.03.2013, 15:41  [ТС]
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
0. НИКОГДА не пишите using namespace ...; в заголовочных файлах.

1. #include "head.h" в method.cpp есть?
0. почему?
1.нет, сейчас попробую
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
08.03.2013, 15:50
Потому что неприятные сюрпризы. Подключаешь такой какой-нибудь хедер head.h, а потом почему-то твоя любовно написанная специальная функция copy() начинает работать совершенно по-другому, потому что кто-то сделал using в хедере и стандартная std::copy() кое-где её перекрыла, а кое-где нет.
1
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
08.03.2013, 15:56  [ТС]
спасибо, все заработало

Добавлено через 3 минуты
~OhMyGodSoLong~, и еще вопрос: нормально ли тело конструктора описывать в отдельном файле, ибо в таком случае он пишет: "+1 перегрузка"?
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
08.03.2013, 16:42
Про конструктор не понял.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// head.h
class integer
{
    private:
        int num;
    public:
        integer();
};
 
// body.cpp
#include  "head.h"
 
integer::integer()
{
    num = 0;
}
При вот таком пишет?
0
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
08.03.2013, 16:59  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// head.h
class integer
{
    private:
        int num;
    public:
        integer(int num);
};
 
// body.cpp
#include  "head.h"
 
integer::integer(int num)
{
    std::cin>>num
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
08.03.2013, 17:27
ну нельзя не стоит так писать! Зачем тебе передавать в конструктор некий num??
Даже если б и надо было, ты только путаешь себя одинаковыми именами.
Предполагаю, что это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// head.h
class integer
{
    private:
        int num;
    public:
        integer();
};
 
// body.cpp
#include  "head.h"
 
integer::integer()
{
    std::cin>>num
}
то, что ты хотел сказать!
Но! Даже так лучше не делать. Ввод-вывод осуществляй отдельно от методов класса.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// head.h
class integer
{
    private:
        int num;
    public:
        integer(int);
};
 
// body.cpp
#include  "head.h"
 
integer::integer(int n): num(n)
{}
0
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
08.03.2013, 22:18  [ТС]
Kuzia domovenok, что плохого в том, что я передаю в конструктор класса метод класса?
C++
1
2
integer::integer(int n): num(n)
{}
вот тут не понял, можно поподробнее
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
08.03.2013, 22:26
lowlol, ты передаёшь в конструктор переменную с таким же именем как и та что является полем класса
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
08.03.2013, 22:28
плохо то, что ты с такой уверенностью пытаешься написать конструктор, не прочитав про него ничего.
И не только конструктор.
Ты не понимаешь, а я вот пытаюсь объяснить, что в МЕТОДы класса передавать его ПОЛЯ не нужно. Они в методы и так неявно передаются.

Добавлено через 1 минуту
Цитата Сообщение от Кудаив Посмотреть сообщение
lowlol, ты передаёшь в конструктор переменную с таким же именем как и та что является полем класса
он не просто передаёт переменную. Он уверен, что передаёт туда само поле класса, и также уверен, что поля класса передавать необходимо всем его функциям.
0
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
08.03.2013, 22:48  [ТС]
Kuzia domovenok, я понимаю, что необязательно называть параметр именем поля, т.е. я мог бы написать
C++
1
2
3
4
5
6
//body.cpp
integer::integer(int k)
{
     std::cin>>k;
     return k;
}
а потом при вызове написать z=integer(num);
я не понимаю почему он в моем варианте пишет +1 перегрузка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.03.2013, 22:48
Помогаю со студенческими работами здесь

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...

Как вынести описание методов вложенного класса за пределы класса?
Подскажите, пожалуйста, как мне вынести описание методов вложенного класса за пределы класса?

Наследование: Как мне определить любой из методов заданного класса внутри другого класса?
Добрый день, подскажите пожалуйста, что я делаю не так Есть файл Container.h в котором храню прототипы методов class Container ...

Вызов методов класса из двойного указателя на экземпляр класса
Добрый день! Как можно вызвать метод класса по двойному указателя на его экземпляр? struct Point { void getPoint(){}; ...

Определение методов set/get в *.h
Методы доступа занимают 1-2 строчки. Можно-ли их определять сразу в *.h, или там можно только объявлять, а определять обязательно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru