Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ С++, какую среду разработки выбрать? Появилось желание изучить язык программирования. Собственно, интересует какая разница, и существует ли она вообще между С++ и Visual C++? Какую среду разработки используют профессиональные программисты? https://www.cyberforum.ru/ cpp-beginners/ thread713444.html Описать структуру ZNAK C++
Описать структуру ZNAK, содержащую следующие поля: • Фамилия, имя • Знак зодиака • Дата рождения (массив из 3 чисел). Программа должна выполнять следующие действия: • Ввод с клавиатуры данных в массив, состоящий из n элементов типа ZNAK; записи должны быть упорядочены по датам рождения; • Вывод на экран информации о человеке, чья фамилия введена с клавиатуры; Если такого нет, выдать на...
C++ Сортировка массива указателей на абстрактный базовый класс Я создал абстрактный базовый класс (с названием Base) и два производных класса (с названиями Two и Three). После инициализации объектов производных классов каждый из этих объектов имеет два данных-члена: string и double. Вопрос: как можно организовать сортировку всех созданных объектов (и объектов Two, и объектов Three)? Первое мое действие - я создаю массив указателей на АБК Base и помещаю в... https://www.cyberforum.ru/ cpp-beginners/ thread713418.html C++ Контроль ввода https://www.cyberforum.ru/ cpp-beginners/ thread713413.html
Задача: написать программу, которая дает пользователю ввести массив, а потом при помощи функции подсчитать символы. Вот код: #include <iostream> using namespace std; const int ArSize=10; void strcount(const char * str); int main() { char input; char next; cout<<"Enter a line:\n";
C++ Удаление и добавление звена в линейном списке
Здравствуйте тётеньки и дяденьки!!!...Помогите мне дописать код... Задача: Картотека в бюро обмена квартир организована в виде линейного списка. Сведения о каждой квартире включают: -количество комнат; -этаж; -площадь; -адрес. Написать программу, которая обеспечивает: -начальное формирование картотеки; -ввод заявки на обмен;
C++ Разные кнопки https://www.cyberforum.ru/ cpp-beginners/ thread713397.html
Дело в том что есть два вида управляемых елемнтов (может ибольше но меня интересуют только эти два) это круглые(в картинке обратите внимание на кнопки "открыть". "закрыть") и квадратные обращайте внимание на кнопки. Надеюсь вы поняли что я имею ввиду. Так вот вопрос как изменить квадратную кнопку на круглую. Заранее благодарен:)
C++ printf. Округление чисел типа double Пытаюсь писать программу для округления чисел типа double. // okruglenie double.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv) { https://www.cyberforum.ru/ cpp-beginners/ thread713396.html C++ Удаление слов, имеющих нечетный порядковый номер
Приветствую всех! Нужна помощь в написании программы, которая получает удаляет все слова с нечетными порядковыми номерами и переворачивает все слова с четными порядковыми номерами. Под словами подразумевается группа символов, разделенными знаком "пробел". Вобщем вся проблема сводится к тому что, у меня никак не выходит удаление слов с нечетным порядковым номером. Как мне записать в массив...
C++ Нужно написать программку по заданию, используя функции, как можно проще https://www.cyberforum.ru/ cpp-beginners/ thread713391.html
Дан интервал натуральных чисел . Напечатать на экране все те числа, которые принадлежат этому интервалу и которые можно выразить как сумму квадратов двух натуральных чисел (используя функцию, которая знает квадраты целых чисел)
C++ Мусор при компиляции https://www.cyberforum.ru/ cpp-beginners/ thread713379.html
Только начал работать с классами, и на первом же примере застрял. Посмотрите пожалуйста, в чем ошибка? //заголовочный файл class.h #include "stdafx.h" #include <stdio.h> #include <math.h> #include <iostream> #include <conio.h> using namespace std;
Задача с иеерархией корней C++
Помогите, не получаеться написать саму функцию с циклом походу((. Задача: Составить программу решающию уравнение вида как на скрине, только с учетом первого чила с которго начинать, шага, и количества числе с конями. Исправьте пожалуйста код)) #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main()
C++ Строки. Подсчитать слова, которые начинаются с буквы B https://www.cyberforum.ru/ cpp-beginners/ thread713317.html
Читайте строки. Напишите программу, которая подсчитывает слова, которые начинаются с буквы B
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
03.12.2012, 19:16 0

"Двойной" доступ к переменным класса - C++ - Ответ 3795945

03.12.2012, 19:16. Показов 1133. Ответов 17
Метки (Все метки)

Ответ

Т.е. ты хочешь (например) получить элемент типа UniformType, расположенного по индексу 1 и вызвать для него метод toTypeB и, чтобы при попытке вызова других методов происходила ошибка, желательно времени компиляции? Теперь я правильно тебя понял?

Если сделать индексацию через параметр шаблона, то можно и в compile-time реализовать. В 11 версии, возможно, и без шаблонов можно будет, если обозначить функцию как константу времени компиляции, но в этом вопросе я не компетентен, так что сомневаюсь. В runtime можно реализовать с использованием RTTI.

Добавлено через 1 минуту
Если не секрет, что за внешний модуль? Хочется знать, чтобы держаться от этого разработчика подальше.)

Добавлено через 5 минут
И ещё смущают вот эти методы:
C++
1
TypeA&  toTypeA(bool& isOK) const;
либо ты сократил и не указал константность возвращаемой ссылки, либо возвращается ссылка на временный объект.

Добавлено через 24 минуты
Невинная фантазия на данную тему. Только тебе не подойдёт, скорее всего, потому что состав объектов другой получился

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
 
typedef int TypeA;
typedef double TypeB;
 
 
class UniformType
{
public:
    UniformType()
        : _type(-1)
        , _ptr(0)
    {   }
 
    ~UniformType()
    {
        delete _ptr;
    }
 
    UniformType( UniformType & rhs)
        : _type(-1)
        , _ptr(0)
    {
        DeepCopy(rhs);
    }
 
    explicit UniformType(const TypeA& _a)
        : _type(0)
    {
        _ptr = new TypeA(_a);
    }
 
    explicit UniformType(const TypeB& _b)
        : _type(1)
    {
        _ptr = new TypeB(_b);
    }
 
    UniformType& operator =( UniformType rhs )
    {
        DeepCopy( rhs );
        return *this;
    }
 
    void DeepCopy( UniformType & rhs)
    {
        delete _ptr;
 
        _type = rhs._type;
 
        switch( _type )
        {
        case 0:
            _ptr = new TypeA(rhs.toTypeA()); break;
        case 1:
            _ptr = new TypeB(rhs.toTypeB()); break;
        }
    }
 
    TypeA & toTypeA()
    {
        if( _type != 0 ) throw int(0);
        return *reinterpret_cast<TypeA*>(_ptr);
    }
 
    TypeB & toTypeB()
    {
        if( _type != 1 ) throw double(1);
        return *reinterpret_cast<TypeB*>(_ptr);
    }
 
private:
    int _type;
 
    void * _ptr;
};
 
 
class EnumerousVariables
{
public:
    EnumerousVariables()
    {
        _u[0] = UniformType(10);
        _u[1] = UniformType(3.14);
    }
 
    TypeA&  getA()
    {
        return _u[0].toTypeA();
    }
    TypeB&  getB()
    {
        return _u[1].toTypeB();
    }
 
    UniformType& operator [] (int i)
    {
        return _u[i];
    }
 
private:
    UniformType _u[2];
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    EnumerousVariables ev;
 
    std::cout << ev[0].toTypeA() << "\n";
    std::cout << ev[1].toTypeB() << "\n";
//  std::cout << ev[1].toTypeA();
 
    return 0;
}


Вернуться к обсуждению:
"Двойной" доступ к переменным класса C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2012, 19:16
Готовые ответы и решения:

Доступ к переменным класса
Давным давно помню была такая фишка в сях, когда приходилось много раз писать конструкцию типа...

Доступ к переменным базового класса при наследовании
Есть следующий код class Base { protected: int x; Base* enemy; public: Base() {}

Как получить доступ к переменным одного класса из методов другого
Есть класс MainWindow с переменными в pablic, и кьютешный QGraphicsView. Нужно вот тут void...

Доступ к переменным класса
Хочу, чтобы функция otrisovka() имела доступ к моему окну и могла там рисовать изображения....

17
03.12.2012, 19:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2012, 19:16
Помогаю со студенческими работами здесь

Доступ к переменным внутри класса
чем отличается доступ к объявленной переменной внутри класса указателем $thes-&gt;, от доступа к не...

Доступ к переменным другого класса
class Form1: Form { public Class1 cl; public PictureBox pictureBox1; public ImageList...

Доступ к классам и переменным класса
Я читаю самоучитель и там на каждом шагу пишут что в классах желательно закрывать доступ ко всем...

Ограниченный доступ к переменным класса
У меня есть 3 класса A, B, C. В классе A есть переменная var. Мне нужно, чтобы класс B мог...

Доступ к переменным и функциям класса из потока
Здравствуйте товарищи. У меня такая проблема, создаю поток, в потоке идет цикл прослушивания...

Доступ к переменным класса из обработчика события KeyPress
Добрый день. Есть форма, в ней контрол RichTextBox. Есть обработчик события KeyPress. Могу ли я в...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru