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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
AnreyKazakov
Заблокирован
#1

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

18.10.2012, 03:59. Просмотров 1121. Ответов 29
Метки нет (Все метки)

Решил написать приложение в кот больше 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++
Добрый день. Есть код: template&lt;int floor&gt; struct Collection { template&lt;typename T&gt; struct WithBath { ...

Объявление в классе объекта другого класса - C++
какая-то фигня получается, допустим есть 2 класса - class1 и class2, в хедерах class1.h подключён class2.h, а в class2.h подключён...

Передача данных объекта одного класса , объекту другого - C++
Доброго времени суток. В общем, столкнулся с проблемой передачи данных от одного класса другому. Есть класс NewApp, создаю объект с...

Обрыв функции при вызове метода из объекта другого класса - C++
Почему выполнение функция обрывается на вызове метода из объекта другого класса? DataBuffer.cpp //Получаем класс FirstDlg void...

Спрятать указатель на функцию класса в map и вызвать из другого объекта - C++
Товарищи, пишу примитивный &quot;tcp-сервер&quot;. В его задачи входит принятие соединений и получение сообщений. В зависимости от сообщения &quot;сервер&quot;...

Класс как параметр другого класса - C++
Зачем использовать один класс как параметр другого, пример: class A {} class B {private: A Peremennaya;} И в чем разница: ...

Класс содержащий объекты другого класса - C++
Наткнулся на такую ситуацию. Как одно поле класса делают объект другого класса со своим конструктором. Типа class second { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
18.10.2012, 06:38     Возможен ли класс для обработки объекта другого класса? #2
если требуется доступ к приватным полям, то копайте в сторону friend
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 08:19     Возможен ли класс для обработки объекта другого класса? #3
Определение класса two поставьте первым и :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
void seta(two &b2)
        {
        a=b2.getb();
        }  
...
    
int main()
    {
    one a1;
    two b2;
    a1.seta(b2);
    
    return 0;   
    }
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
18.10.2012, 10:23     Возможен ли класс для обработки объекта другого класса? #4
Если у Вас класс one зависит от класса two, при этом класс two зависит от класса one и объявлен после класса one, то при компиляции класса one компилятор еще ничего не знае про класс two, собственно по этому и возникает ошибка. Чтобы ошибки не было необходимо перед классом one поставить
C++
1
class two;
это скажет компилятору что класс two существует и объявлен где-то далее
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 10:34     Возможен ли класс для обработки объекта другого класса? #5
Добавлено через 2 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
Чтобы ошибки не было необходимо перед классом one поставить: class two;
Это не помогает.
Цитата Сообщение от Croessmah Посмотреть сообщение
собственно по этому и возникает ошибка.
И не только поэтому. Как компилятор должен понять, что такое b2?
AnreyKazakov
Заблокирован
18.10.2012, 10:36  [ТС]     Возможен ли класс для обработки объекта другого класса? #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Это не помогает.
ТОчно, а было бы решением всех проблеи я не могу поставить two перед one
тк класс two тоже должен вызывать объект класса one. Т.е. ситуация не поменяется...

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Как компилятор должен понять, что такое b2?
Я знаю, что проблема в этом, я не знаю как ее решить
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 10:39     Возможен ли класс для обработки объекта другого класса? #7
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Я знаю, что проблема в этом, я не знаю как ее решить
Я вам написал как. Что не устраивает? Этот код выдаёт ошибку?
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
43
44
45
46
#include <iostream>
 
class two
    {
    public:
    int getb()
        {
        return b;   
        }
    void seta(int _b)
        {
        b=_b;   
        }
    private:
    int b;  
    };  
 
class one
    {
    public:
    int geta()
        {
        return a;   
        }
    void seta(int _a)
        {
        a=_a;   
        }
    void seta(two &b2)
        {
        a=b2.getb();
        }    
    private:
    int a;  
    };
    
 
    
int main()
    {
    one a1;
    two b2;
    a1.seta(b2);
    
    return 0;   
    }
AnreyKazakov
Заблокирован
18.10.2012, 10:50  [ТС]     Возможен ли класс для обработки объекта другого класса? #8
Цитата Сообщение от alsav22 Посмотреть сообщение
Я вам написал как. Что не устраивает? Этот код выдаёт ошибку?
Ну е мае написал же
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
я не могу поставить two перед one
тк класс two тоже должен вызывать объект класса one
Там с классами с этими совсем чехарда получилась
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 10:55     Возможен ли класс для обработки объекта другого класса? #9
Если пример кода выкладываете, то он должен соответствовать тому, с которым работает. Тут телепатов нет. Где у вас в коде two работает с one?
AnreyKazakov
Заблокирован
18.10.2012, 11:01  [ТС]     Возможен ли класс для обработки объекта другого класса? #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
43
44
45
#include <iostream>
 
class one
    {
    public:
    void seta();
    int geta()
        {
        return a;   
        }
    void seta(int _a)
        {
        a=_a;   
        }
    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;   
    }       
 
void one::seta()
        {
        a=b2.getb();
        /*вот здесь ругает*/
        }
Добавлено через 58 секунд
Цитата Сообщение от alsav22 Посмотреть сообщение
Где у вас в коде two работает с one
Это только пример, было бы можно классы местами поменять я бы наверно не спрашивал
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 11:04     Возможен ли класс для обработки объекта другого класса? #11
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Это только пример, было бы можно классы местами поменять я бы наверно не спрашивал
Ещё раз повторяю, тут телепатов нет. Ответ даётся на конкретный впрос, по конкретному коду. Перед тем как пример выкладывать, нужно подумать, соответствует ли он тому, что хотите выяснить.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,723
18.10.2012, 11:06     Возможен ли класс для обработки объекта другого класса? #12
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
я не могу поставить two перед one
тк класс two тоже должен вызывать объект класса one.
вот так это делается
C++
1
2
3
4
5
6
7
8
9
class one;
class two
{
............
}
class one
{
.........
}
AnreyKazakov
Заблокирован
18.10.2012, 11:06  [ТС]     Возможен ли класс для обработки объекта другого класса? #13
Решил общего наследника сделать, НО, как бэ проблема не решена. С такой структурой, если в таком духе работать получится каша сплошная...
AnreyKazakov
Заблокирован
18.10.2012, 11:15  [ТС]     Возможен ли класс для обработки объекта другого класса? #14
Цитата Сообщение от ValeryS Посмотреть сообщение
вот так это делается
ну вот сделал я
так

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
43
44
45
#include <iostream>
 
class one;
class two;
 
int main()
    {
    one a1;
    two b2;
    return 0;   
    }       
 
class one
    {
    public:
    void seta()
        {
        a=b2.getb();
        }   
    int geta()
        {
        return a;   
        }
    void seta(int _a)
        {
        a=_a;   
        }
    private:
    int a;  
    };
    
class two
    {
    public:
    int getb()
        {
        return b;   
        }
    void seta(int _b)
        {
        b=_b;   
        }
    private:
    int b;  
    };

Возможен ли класс для обработки объекта другого класса?
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,723
18.10.2012, 11:25     Возможен ли класс для обработки объекта другого класса? #15
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
ну вот сделал я
сам то можешь объяснить словами что ты делаешь или хотел сделать
кто такой b2 ???
еще раз взаимное использование классов
например так
C++
1
2
3
4
5
6
7
8
9
10
11
class one;
class two
{
one * A
............
}
class one
{
.two* B
........
}
или так
C++
1
2
3
4
5
6
7
8
9
10
11
class one;
class two
{
friend class one;
............
}
class one
{
 
........
}
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
18.10.2012, 11:28     Возможен ли класс для обработки объекта другого класса? #16
Да что ж за программисты то пошли такие... Вам уже два раза написали, что нужно
C++
1
class не_объявленный_класс;
все вам нужно разжевать и в рот положить. Отделите объявление классов от определений и будет Вам счастье...
AnreyKazakov
Заблокирован
18.10.2012, 11:35  [ТС]     Возможен ли класс для обработки объекта другого класса? #17
Цитата Сообщение от Croessmah Посмотреть сообщение
все вам нужно разжевать и в рот положить.
Блин, я понимаю, что так надо. Видел, не слепой, что здесь писали, открыл книжки, там то же самое написано, но не прет и все тут. Я же пишу
ВОТ

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
43
44
45
#include <iostream>
 
class one;
class two;
 
int main()
    {
    one a1;
    two b2;
    return 0;   
    }       
 
class one
    {
    public:
    void seta()
        {
        a=b2.getb();
        }   
    int geta()
        {
        return a;   
        }
    void seta(int _a)
        {
        a=_a;   
        }
    private:
    int a;  
    };
    
class two
    {
    public:
    int getb()
        {
        return b;   
        }
    void seta(int _b)
        {
        b=_b;   
        }
    private:
    int b;  
    };
код. А он не пашет, хоть что ты делай...
Цитата Сообщение от ValeryS Посмотреть сообщение
кто такой b2 ???
объект класса two
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,723
18.10.2012, 11:47     Возможен ли класс для обработки объекта другого класса? #18
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
объект класса two
ну и где та его создал? в Main
а где используешь? в методе класса
ты хоть передай его классу-то, чтобы он знал с чем работать
а данное решение показывает на неправильную архитектуру программы, ты не понимаешь что такое класс и с чем его едят.
Впихивать классы, потому что они есть, по крайней мере глупо

и не скрывай код под тегами, если хочешь чтобы его кто нибудь прочитал
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
18.10.2012, 12:08     Возможен ли класс для обработки объекта другого класса? #19
Я же написал, отделите объявления от определений, хотя бы так:
C++
1
2
3
4
5
6
7
8
9
class two;
class one{
//объявление функций и переменных
};
class two{
//объявление функций и переменных
};
 
//ОПРЕДЕЛЕНИЕ ФУНКЦИЙ классов one  и two
Добавлено через 17 минут

Не по теме:

Впихивать классы, потому что
они есть, по крайней мере
глупо
Для обучения можно )))

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 12:29     Возможен ли класс для обработки объекта другого класса?
Еще ссылки по теме:

Передача указателя в класс на объект другого класса - C++
Не могу передать ссылку на объект класса в другой класс main.cpp #include &lt;iostream&gt; #include &quot;test\class_a.h&quot; #include...

Как создать класс, который содержит элементы другого класса - C++
Добрый день, я чисто любитель, начала сама потихоньку разбираться в с++, благополучно дошла до классов и сделала класс konto (банковский...

Создание объекта произвольного класса по указателю на базовый класс - C++
Есть некий абстрактный базовый класс . Мы знаем , что от этого базового класса будет образовано несколько конкретных производных классов...

Ошибка при компиляции. Как правильно создавать класс с объектами от другого класса? - C++
Есть класс Car. У него есть двигатель(class Engine) и переменная скорость(speed), которая зависит от мощности(power). power- переменная...

Класс для обработки строки - C++
Помогите, пожалуйста, исправить ошибку. Условие задачи: Написать программу, в которой предусмотреть класс для организации обработки...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 12:29     Возможен ли класс для обработки объекта другого класса? #20
Цитата Сообщение от Croessmah Посмотреть сообщение
Я же написал, отделите объявления от определений, хотя бы так:
Так правильно будет?
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
 
class two;
 
class one
{
   public:
     int geta();
     void seta(int _a);
     void seta(two& b2);
   private:
    int a;  
};
 
class one;
 
class two
{
    public:
      int getb();
      void seta(int _b);
      void seta(one &a);
    private:
      int b;  
};  
    
int one::geta()
{
    return a;   
}
 
void one::seta(int _a)
{
    a=_a;   
}
 
void one::seta(two& b2)
{
    a=b2.getb();
}   
    
int two::getb()
{
    return b;   
}
 
    void two::seta(int _b)
{
    b=_b;   
}
 
void two::seta(one &a)
{
    b=a.geta();   
}
 
int main()
{
    one a1;
    two b2;
    a1.seta(b2);
    b2.seta(a1);
    
    return 0;   
}
Добавлено через 12 минут
Другой вариант: раскидать прототипы и реализацию по разным файлам. В заголовочном с прототипами сделать: class one; class two;
Yandex
Объявления
18.10.2012, 12:29     Возможен ли класс для обработки объекта другого класса?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru