Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/31: Рейтинг темы: голосов - 31, средняя оценка - 4.97
Rabbit13245
28 / 28 / 5
Регистрация: 21.04.2012
Сообщений: 282
1

Перегрузка оператора присваивания

24.05.2012, 00:04. Просмотров 5818. Ответов 5
Метки нет (Все метки)

Добрый вечер. Есть задание: Нужно так перегрузить оператор =, чтобы можно было элементу одного класса, присваивать значение элемента другого класса.

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
class CName1{
    char sName[5]; 
public:
    CName1(){
        sName[0]='\0';
    }
 
    void operator = (CName2 &M){
        strcpy(CName, M.sNamee);
    }
};
 
class CName2{
    char sNamee[5];
public:
    CName2(){
        sNamee[0]='\0';
    }
    void operator = (char *rValue){ //здесь тоже перегрузка оператора=, но для одной строки
        strcpy(sNamee,rValue);
}
};
class CAccount{
    char sName[15];
    static CName1 sGroupNumber;
    static CName2 sGroupNumber1;
public:
        static void Init(){
        sGroupNumber1="711";
    }
        static void Init1(){
            sGroupNumber=sGroupNumber1;
        }
};
 
CName1 CAccount::sGroupNumber;
CName2 CAccount::sGroupNumber1;
 
int _tmain(int argc, _TCHAR* argv[])
{
    CAccount::Init();
    CAccount::Init1();
    return 0;
}
Ну и вылезают ошибки.. Как правильно перегрузить оператор?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2012, 00:04
Ответы с готовыми решениями:

Перегрузка оператора присваивания
Задание простое: по заданному классу составить простую программу с...

Перегрузка оператора присваивания
struct pointer_command { public: void * x; public: void set(void * y){x...

Перегрузка оператора присваивания
При перегрузке оператора присвоения выдает ошибки cpp(58) : warning C4996:...

Перегрузка оператора присваивания
мне надо было реализовать конструкторы, деструктор, оператор присваивания,...

Перегрузка оператора присваивания
Вот есть такой класс template<typename TT> class Matrix { public:...

5
antoha398
156 / 156 / 27
Регистрация: 29.03.2012
Сообщений: 418
24.05.2012, 00:21 2
прототип для первого класса будет выглядеть так:
C++
1
CName1& operator=(const CName2&);
еще, чтобы в классе cname1 использовать переменные типа cname2, нужно второй класс объявить перед первым.
0
Rabbit13245
28 / 28 / 5
Регистрация: 21.04.2012
Сообщений: 282
24.05.2012, 00:33  [ТС] 3
А если в классе CName2 переменные с идентификатором private? он ругается на это в перегрузке
0
antoha398
156 / 156 / 27
Регистрация: 29.03.2012
Сообщений: 418
24.05.2012, 10:17 4
Если нужен доступ к закрытым членам, тогда делайте класс или отдельные его функции френдами.
0
Rabbit13245
28 / 28 / 5
Регистрация: 21.04.2012
Сообщений: 282
25.05.2012, 21:18  [ТС] 5
совсем нет) не обязательно делать френдами) проверьте пожалуйста)
вот мое решение:
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
#include "stdafx.h"
#include <string.h>
 
 
 
class CName1{
    char a[5];
public:
    CName1(){
        a[0]='\0';
    }
    void operator = (char *rValue){
        strcpy(a,rValue);
    }
    char* ret(){
        return a;
    }
};
    
class CName2{
    char b[5];
public:
    CName2(){
        b[0]='\0';
    }
    void operator = (CName1 &M){
        strcpy(b,M.ret());
    }
 
    char ret(){
        return b;
    }
};
    
class CAccount{
    CName1 s1;
    CName2 s2;
public:
    void Init(){
        s1="711";
    }
    void Init2(){
        s2=s1;
        void ret(); 
    }   
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    CAccount l;
    l.Init();
    l.Init2();
 
    return 0;
}
0
antoha398
156 / 156 / 27
Регистрация: 29.03.2012
Сообщений: 418
25.05.2012, 21:29 6
ну да, если есть функция возращающая закрытую переменную, можно и так.
0
25.05.2012, 21:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2012, 21:29

Перегрузка оператора присваивания
Доброго времени суток всем! Никак не могу правильно написать перегрузку...

Перегрузка оператора присваивания
Приветствую всех. Не могли бы подсказать как переопределить оператор...

Перегрузка оператора присваивания
Здравствуйте! Помогите, пожалуйста разобраться с перегрузкой оператора...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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