Форум программистов, компьютерный форум CyberForum.ru

Возможен ли класс для обработки объекта другого класса? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
AnreyKazakov
Заблокирован
18.10.2012, 03:59     Возможен ли класс для обработки объекта другого класса? #1
Решил написать приложение в кот больше 10 строк... Куча классов получилась, запутался в данных и во всем, но главное не вэтом. Получилось так что первый класс должен обрабатывать объект второго класса, и наоборот, второй первого... Можно ли так сделать?

Вот допустим есть два класса, как убрать ошибку в функции void seta() в классе one?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
class one
    {
    public:
    int geta()
        {
        return a;   
        }
    void seta(int _a)
        {
        a=_a;   
        }
    void seta()
        {
        a=b2.getb();
        /*вот здесь ругает*/
        }   
    private:
    int a;  
    };
    
class two
    {
    public:
    int getb()
        {
        return b;   
        }
    void seta(int _b)
        {
        b=_b;   
        }
    private:
    int b;  
    };  
    
int main()
    {
    one a1;
    two b2;
    return 0;   
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 03:59     Возможен ли класс для обработки объекта другого класса?
Посмотрите здесь:

Объявление в классе объекта другого класса C++
объявление объекта одного класса в описании другого класса C++
C++ Ошибка компиляции (преобразование объекта класса в объект другого класса)
C++ создание объекта произвольного класса по указателю на базовый класс
C++ Передача объекта методу другого объекта другого класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
18.10.2012, 12:30     Возможен ли класс для обработки объекта другого класса? #21
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
a=b2.getb();
Что это ? Может это объект класса two ? Тогда где он объявлен ? - В main... хД
alsav22, Запостил хороший выход из ситуации.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
18.10.2012, 12:39     Возможен ли класс для обработки объекта другого класса? #22
вы не понимаете разницу между объявлением функции и ее определением?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class two;
class one{ 
private:
     int a;
public:
     void seta(int);
     void seta(&b);
     int geta();
};
 
class two{
private:
     int b;
public:
     void setb(int);
     int getb();
};
 
void one::seta(int _a){
     a=_a;
}
void one::seta(two &b){
     a=b.getb();
}
int one::geta(){
     return a;
}
 
void two::setb(int _b){
     b=_b;
}
int two::getb(){
      return b;
}
Как-то так. Пишу с телефона, так что не проверял.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 12:48     Возможен ли класс для обработки объекта другого класса? #23
Цитата Сообщение от Croessmah Посмотреть сообщение
вы не понимаете разницу между объявлением функции и ее определением?
Это кому вопрос?

Добавлено через 3 минуты
Цитата Сообщение от m1Rr0r Посмотреть сообщение
alsav22, Запостил хороший выход из ситуации.
Это не я. Просто написал, что предложил Croessmah в 19 посте. Я нашёл решение, чтобы прототипы и реализацию по файлам раскидать. Решение проблемы, насколько я понял, в том, что при предварительной декларации классов, реализации методов нужно располагать вне тела класса.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
18.10.2012, 12:51     Возможен ли класс для обработки объекта другого класса? #24
Это кому вопрос?
автору темы. Я ему два раза написал, а он все равно упорно пишет определения методов прямо в объявлении класса. Так и пришлось сенсор насиловать =)
AnreyKazakov
Заблокирован
18.10.2012, 13:02  [ТС]     Возможен ли класс для обработки объекта другого класса? #25
Цитата Сообщение от alsav22 Посмотреть сообщение
Так правильно будет?
Во, от души, делал уже то же самое, но запутался и отложил было до лучших времен.... спасиб, щас только под свою задачу подправлю (уж надеюсь )

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Так и пришлось сенсор насиловать =)
нзато дошло =)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
18.10.2012, 13:14     Возможен ли класс для обработки объекта другого класса? #26
что при
предварительной декларации
классов, реализации методов
нужно располагать вне тела
класса.
Само собой, ведь инструкцией
C++
1
class two;
мы только даем понять, что такой класс существует. Но про его методы и переменные компилятору ничего не известно. Поэтому функции, где используются эти методы необходимо выносить.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 13:27     Возможен ли класс для обработки объекта другого класса? #27
Цитата Сообщение от Croessmah Посмотреть сообщение
мы только даем понять, что такой класс существует. Но про его методы и переменные компилятору ничего не известно
Почему сам не посмотрит в объявлении класса, ведь он уже знает, что класс существует?

И ещё, AnreyKazakov, выносить, в данном случае, можно реализации только тех методов, для которых необходима предварительная декларация класса. Остальные можно оставить в теле класса.
AnreyKazakov
Заблокирован
18.10.2012, 13:38  [ТС]     Возможен ли класс для обработки объекта другого класса? #28
Цитата Сообщение от alsav22 Посмотреть сообщение
AnreyKazakov, выносить, в данном случае, можно реализации только тех методов, для которых необходима предварительная декларация класса.
Я уж понял, моя ошибка была в том, что я либо выносил методы эти из класса, либо определял классы (ну сверху писал их названия, надеюсь прально сказал). Но чет не додумывался совместить...
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
18.10.2012, 16:42     Возможен ли класс для обработки объекта другого класса? #29
Цитата Сообщение от alsav22 Посмотреть сообщение
И ещё, AnreyKazakov, выносить, в данном случае, можно реализации только тех методов, для которых необходима предварительная декларация класса. Остальные можно оставить в теле класса.
Но лучше выносить все. Класс - cpp и h фаил
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 17:40     Возможен ли класс для обработки объекта другого класса?
Еще ссылки по теме:

C++ Класс как параметр другого класса
C++ Передача указателя в класс на объект другого класса
Класс содержащий объекты другого класса C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 17:40     Возможен ли класс для обработки объекта другого класса? #30
Цитата Сообщение от Croessmah Посмотреть сообщение
Но лучше выносить все. Класс - cpp и h фаил
Согласен. Мне кажется, это лучшее решение.
Yandex
Объявления
18.10.2012, 17:40     Возможен ли класс для обработки объекта другого класса?
Ответ Создать тему
Опции темы

Текущее время: 12:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru