Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447

Переменная которая может принимать два типа

05.03.2016, 20:21. Показов 2891. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли в С++ сделать так чтобы переменная могла принимать два типа unsigned char и TestClass??
Попробовал сделать через void* но тогда не могу запринтить значение. Может можно как-то использовать Union?

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
#include <iostream>
#include "Cons_Cell.h"
using namespace std;
 
 
class Cell{
    void* value;
    Cell *next;
 
public:
    Cell(){
        value = nullptr;
        next = nullptr;
    }
    Cell(unsigned char x){
        this->value = (unsigned char *)x;
        next = nullptr;
    }
 
    Cell(Cell *x){
        this->value = &x;
        next = nullptr;
    }
 
    void printvalue(){
        cout << this->value;
    }
};
 
int main() {
    Cell *cell = new Cell('x');
    cell->printvalue();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2016, 20:21
Ответы с готовыми решениями:

Определить максмальный размер, который может принимать переменная
Здравствуйте подскажите как реализовать следующубю задачу. Дана переменная re типа int и нужно узнать диапазон принимаемых ею значений. Всё...

Какие значения может принимать переменная типа TComponentName
Проблема в следующем. У Series'a есть свойство Name т.е. обращаемся так Chart1.Series.Name. Тип Name : TComponentName. Когда...

Какие значения может принимать переменная а
Помогите разобраться: Какие значения может принимать переменная а, если она определена следующим образом: a:=2*RANDOM();

6
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
05.03.2016, 20:27
unsigned char
Это что? Новый стандарт что ли? C++20?
0
15 / 15 / 8
Регистрация: 02.03.2016
Сообщений: 37
05.03.2016, 20:32
Лучший ответ Сообщение было отмечено Vaderkos как решение

Решение

В реалиях вашего примера можно найти такое быстрое решение с помощью переменной, которая однозначно указывает, какой тип объекта хранится:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Cell{
    void* value;
    Cell *next;
 
    bool valueIsA;
...
   Cell(unsigned char x){
        this->value = (unsigned char *)x;
        valueIsA = true;
...
   Cell(Cell *x){
        this->value = &x;
        valueIsA = false;
...
   void printvalue(){
        if(valueIsA)
          cout << (unsigned char)this->value;
        else
          cout << this->value;
Но я бы завел дополнительный шаблонный класс, который имеет свой метод для вывода
1
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
05.03.2016, 20:33  [ТС]
Sabnik18, https://msdn.microsoft.com/ru-... 53fe1.aspx
0
15 / 15 / 8
Регистрация: 02.03.2016
Сообщений: 37
05.03.2016, 20:35
Цитата Сообщение от Sabnik18 Посмотреть сообщение
unsigned char
Это что? Новый стандарт что ли? C++20?
Это беззнаковый char, очень давно существует, как бы не с самого начала
http://stackoverflow.com/quest... igned-char
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
05.03.2016, 21:14
Цитата Сообщение от Sabnik18 Посмотреть сообщение
Это что?
Типы данных - где нужно использовать char, а где unsigned char?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
05.03.2016, 21:23
Цитата Сообщение от Vaderkos Посмотреть сообщение
Можно ли в С++ сделать так чтобы переменная могла принимать два типа unsigned char и TestClass
C++
1
2
3
std::pair<unsigned char,TestClass> p;
p.first = 10; // unsigned char
p.second = ...; // TestClass
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2016, 21:23
Помогаю со студенческими работами здесь

Предположим, что переменная типа CHAR занимает 1 байт, переменная типа INTEGER занимает два байта
Предположим, что переменная типа CHAR занимает 1 байт, переменная типа INTEGER занимает два байта, а переменная типа REAL занимает 4 байта....

Какая переменная которая позволяет vba принимать собственные решения
Выбрать один вариант ответа: Переменная которая позволяет vba принимать собственные решения относительно того какой тип данных она...

Дискретная случайная величина может принимать два значения
Помогите разобраться с задачей, почти в самом начале просто стопорюсь и не знаю откуда брать значения, подскажите или скажите куда копать )

Создать процедуру которая может принимать один параметр 2 типов данных
Помогите пожалуйста написать процедуру которая может принимать переменную типа TComboBox или TListBox. Пробовал объявить процедуру вот...

Каксделать что бы переменная могла принимать значение типа real и значение nil?
Допустим есть функция : function kvkor(a:real; b:real) :real; begin If a = nil then Begin ... end Else Begin If b = nil...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru