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

Можно ли заменить обращение к Union без указания типа переменной? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно разобраться с средой разработкой для C++ http://www.cyberforum.ru/cpp/thread1113231.html
Привет Всем ! Если я не ошибаюсь то с .NET 2003 (VS 7.1) шапки языка C++ немного изменился, и разница была следующая: 1. до: #include <iostream.h> void main(void) ...... и т.д... 2. после: #include <iostream>
C++ Libxl.h как подключить? Помогите подключить библиотеку к Visual C++ 2012 Или даже так - помогите разобраться с тем как парсить с xls файлов. http://www.cyberforum.ru/cpp/thread1111407.html
Ошибка с распределением цикла по потокам в Open MP C++
нужно цикл for разделить м/у потоками,но почему то ошибки выдает ,первый раз с Open MP работаю,подскажите как исправить ,пожалуйста... пишу на VS 2010 Ultimate ошибки:Ошибка 4 error C3004: shared: предложение не допускается в директиве OpenMP "for" Ошибка 5 error C3017: неверный вид проверки завершения в операторе For директивы OpenMP #pragma omp parallel { #pragma omp for...
Надзиратель томагавков или что за велосипед я изобрел? C++
She's alive! Господа, в общем вдохновился я темой programina про статические поля класса и решил создать что-то похожее на сборщик мусора. По скольку я придерживаюсь мнения, что порою лучше сперва самому поковыряться, а потом уже почитать как правильно надо было сделать, то вот такой у меня получился уродец. Долго думал куда можно его применить в качестве примера. Придумал - класс-томагавк....
C++ Получение из файла формата wav массива значений http://www.cyberforum.ru/cpp/thread1108824.html
Столкнулся со следующей задачей, требуется получить из wav файла массив значений. Сам владею Си на примитивном уровне, по этой причине решить данную задачу самостоятельно не могу, поиск в гугле ничего не дал (или просто я не увидел решения). Надеюсь на вашу помощь.
C++ Run exe from memory (x64) Есть необходимость запускать exe из памяти, а не с диска. Может кто сталкивался с данным проектом? Сам находил много проектов, но они были Win32 и не работали под сборкой x64. А мне нужен именно x64, так как это проект будет использоваться в связки с другими 64-битными проектами. подробнее

Показать сообщение отдельно
DrOffset
6917 / 4110 / 940
Регистрация: 30.01.2014
Сообщений: 6,905
23.03.2014, 17:57     Можно ли заменить обращение к Union без указания типа переменной?
Цитата Сообщение от Izual Посмотреть сообщение
Значит в собственную функцию можно, а в стандартную(strcat например) нет?
Почему же нельзя? Можно.

Цитата Сообщение от Izual Посмотреть сообщение
Да просто надоели уже переубеждать
Может быть стоит задуматься почему так происходит? Хотя лично я тебя не переубеждаю. Я пытаюсь заставить тебя подумать о том, что твое мнение не единственно правильное на земле. И раз существуют разные инструменты, не значит что их придумали глупцы, если лично тебе они не подходят.

Цитата Сообщение от Izual Посмотреть сообщение
Виноват, если он не качественный.
Ты меня извини, но я пока не могу сказать, что ты можешь это объективно оценить. Если ты говоришь, что не хочешь (по любым причинам), это я приму, а подобные приведенному выше утверждения - нет.

Добавлено через 12 минут
Вот пример из 4го поста вместе с strcat (в нем все еще отсутствует проверка на текущий тип в 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <cstring>
#include <cstdio>
 
union data_t
{
    int   i;
    float f;
    char  str[42];
 
    operator int()
    {
        return i;
    }
    operator float()
    {
        return f;
    }
    operator char * ()
    {
        return str;
    }
 
    data_t & operator=(char const * s)
    {
        strncpy(str, s, 41);
        return *this;
    }
    data_t & operator=(int x)
    {
        i = x;
        return *this;
    }
    data_t & operator=(float x)
    {
        f = x;
        return *this;
    }
};
 
int main()
{
    data_t data;
    char buf[256] = "this is a ";
 
    data = "test";
    strcat(buf, data); // здесь явно писать не надо, т.к. приведение будет
                       // выбрано в соответствии с типом аргумента
 
    printf("%s\n", (char*)data); // здесь явное приведение нужно, потому что printf
                                 // работает (через эллипсис) в обход системы типов языка
 
    printf("%s\n", buf);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru