Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
1

Класс на основе стандартного типа

30.07.2019, 17:36. Показов 1512. Ответов 2

Author24 — интернет-сервис помощи студентам
Добрый день всем.

Как известно, в C++ имеется стандартный тип int. Хотелось бы реализовать на основе данного типа класс Integer, который можно будет легко приводить к типу int. Например:

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main()
{
    int a = 5, b = 6, c = 7;
    Integer d = a * b + 7;
    cout << d << endl;
 
    return 0;
}
Т.е. некое подобие того, как это сделано в C# с int и System.Int32 или в Java с int и java.lang.Integer. Да, я в курсе про существование typedef, но хочется не просто задать новое имя для типа, а ещё определить дополнительные методы.

Понятное дело, что для типа int такой класс создавать не очень практично, но не в этом суть, он взят чисто для примера.

Заранее спасибо за помощь!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2019, 17:36
Ответы с готовыми решениями:

Создать динамический класс Route на основе двозвьязного списка, где каждый элемент типа stop (стоп)
Создать динамический класс Route на основе двозвьязного списка, где каждый элемент типа stop...

Разработать класс SuperStar, который следует функциональность стандартного типа str и содержит 2 новых метода:
Разработать класс SuperStar, который следует функциональность стандартного типа str и содержит 2...

Создание класса на основе стандартного
Здравствуйте, новичок в программировании пытаюсь разобраться с классами. Цель создать класс на...

Как создать свой компонент, на основе стандартного?
Как создать свой компонент на основе стандартного. Например, хочу сделать свой компонент на основе...

2
2123 / 1206 / 502
Регистрация: 11.10.2018
Сообщений: 6,082
30.07.2019, 17:50 2
А какие методы Вы хотите определить дополнительно?
0
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
30.07.2019, 17:54 3
Лучший ответ Сообщение было отмечено BlackStoneBlack как решение

Решение

ну а в чем проблема? Перегружайте оператор копирования, копирующий конструктор, приведение к типу int и дальнейшие операции

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
class Integer {
 
    private:
        int value;
 
    public:
        Integer() : value(0) {}
        Integer(int value) : value(value) {}
        Integer(const Integer& obj) : value(obj.value) {}
 
        Integer& operator=(int value) {
            this->value = value;
            return *this;
        }
 
        Integer& operator=(const Integer& obj) {
            if (this == &obj) {
                return *this;
            }
 
            value = obj.value;
            return *this;
        }
 
        operator int() {
            return value;
        }
};
другие операторы по той же логике делайте
0
30.07.2019, 17:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2019, 17:54
Помогаю со студенческими работами здесь

Как преобразовать класс определенного типа в класс другого типа с входным типом
Создал 2 класса, которые служат аргументами для событий Public Class ItemAddedEventArgs(Of T) ...

Стоимость интернет магазина на основе стандартного CMS с доработкой дизайна и функциональности
Интересует сколько стоит установка на хосте интернет магазина на основе одного из стандартного CMS,...

Заменить поле класса со стандартного типа на пользовательский
Я написал класс kartoteka: typedef unsigned int uint; struct str { char *name; char...

Преобразование типа из пользовательского в стандартный и из стандартного в пользовательский
Уважаемые форумчане, нужна ваша помощь в этом вопросе про преобразовния типов. Где об этом...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru