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

мультиоператор - вохможно ли? - C++

Восстановить пароль Регистрация
 
 
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
12.01.2013, 16:01     мультиоператор - вохможно ли? #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct SAI_BuMa
{
    int number_BuMa;
    int counter_BuMa;
};
struct SAI_ReBuMa
{
    int level_ReBuMa;
    int counter_ReBuMa;
};
struct pointer_command
{
protected:
    void * x;
public:
    inline void operator = (void * y ) {x = y;}
    operator void* () const { return x; }
    template <class Type> 
    void operator= (Type a) const {  x = new char[sizeof(a)] memcpy(x, *a, [sizeof(a)]); }
    SAI_BuMa * operator-> ();// const {return  (SAI_BuMa*)x;}
    SAI_ReBuMa * operator-> ();// const {return  (SAI_ReBuMa*)x;} // тут выскакивает ошибка о переопределении 
 
};
C++
1
pointer_command x;
у меня задача - сделать так чтоб при написании x-> можно было обратится и к данным структуры SAI_BuMa и к данным структуры SAI_ReBuMa. как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 16:01     мультиоператор - вохможно ли?
Посмотрите здесь:

C++ Qt Чем вохможно запустить через c++ qt прогу сторонний exe

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
12.01.2013, 17:56     мультиоператор - вохможно ли? #21
Цитата Сообщение от Avazart Посмотреть сообщение
Вот именно что-то ... а что-то это всегда требует знание того к чему его кастовать...
так ведь есть же
Цитата Сообщение от Avazart Посмотреть сообщение
информация для правильной интерпретации указателя.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
12.01.2013, 17:59     мультиоператор - вохможно ли? #22
UserAK, это сишный подход.
На плюсах так писать не то что технически неправильно (безусловно, это скомпилируется и будет работать), скорее идеологически неверно. Если пишешь на плюсах - следуй принципам ООП. Без фанатизма, но следуй.


Van111, повторю свой вопрос про вариативность данных. И добавлю новый - как планируется получать к ним доступ?
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
12.01.2013, 18:02     мультиоператор - вохможно ли? #23
кстати в winAPI повсюду подобная унификация
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,602
Записей в блоге: 17
12.01.2013, 18:03     мультиоператор - вохможно ли? #24
Цитата Сообщение от UserAK Посмотреть сообщение
кстати в winAPI повсюду подобная унификация
winAPI это Си стаЙл, ибо там про классы не намека
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
12.01.2013, 18:15     мультиоператор - вохможно ли? #25
Цитата Сообщение от I.M. Посмотреть сообщение
Без фанатизма, но следуй.
согласен ))

Добавлено через 11 минут
Цитата Сообщение от Avazart Посмотреть сообщение
winAPI это Си стаЙл, ибо там про классы не намека
ну я к тому, что если завернуть в красивую обёртку... может никто и не заметит
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,602
Записей в блоге: 17
12.01.2013, 18:16     мультиоператор - вохможно ли? #26
Цитата Сообщение от UserAK Посмотреть сообщение
ну я к тому, что если завернуть в красивую обёртку... может никто и не заметит
А вообще будет ли кто смотреть такой код ?
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
12.01.2013, 18:21     мультиоператор - вохможно ли? #27
насколько я понял это просто для того, чтобы автокмплит чего-нибудь подсказывал.
только вот зачем? всеравно ведь нет чёткой связи
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,602
Записей в блоге: 17
12.01.2013, 18:25     мультиоператор - вохможно ли? #28
Цитата Сообщение от Van111 Посмотреть сообщение
собсвенно command - сама команда, pointer - указатель на данные этой команды.
А команда тут что ? ф-ция или еще одна структура ?

Почему данные и способ работы с ними отдельно ?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
12.01.2013, 19:59  [ТС]     мультиоператор - вохможно ли? #29
C++
1
2
3
4
5
6
    vector <union
    {
        SAI_BuMa *AI_BuMa;
        SAI_ReBuMa *AI_ReBuMa;
        //...
    };> x;
как нибудь можно сделать чтоб это прошло, а не пришлось использовать ещё одну структуру в которой будет данное объединение, чтобы получить доступ к объеденению, сразу после x[0]. а не через x.command[].
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
12.01.2013, 20:24     мультиоператор - вохможно ли? #30
Та нафиг...
C++
1
2
3
struct SAI_Big : public SAI_BuMa, SAI_ReBuMa
{
};
И используй SAI_Big с полями обоих классов.)
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
12.01.2013, 20:30  [ТС]     мультиоператор - вохможно ли? #31
сделал через typedef
вот всё решение
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
#include <vector>
using namespace std;
struct SAI_BuMa 
{
    int number_BuMa;
    int counter_BuMa;
};
struct SAI_ReBuMa 
{
    int level_ReBuMa;
    int counter_ReBuMa;
};
typedef 
    union
    {
        SAI_BuMa *AI_BuMa;
        SAI_ReBuMa *AI_ReBuMa;
        //...
    }
SAI_command;
struct SAI_commandS
{
    vector <SAI_command>pointer;
    vector <int> type;
};
 
struct SAI_style
{
    vector <SAI_commandS> building_layer;
    unsigned int    current_command;
    unsigned int    current_layer;
    int chance;
};
всем спасибо за поддержку
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
12.01.2013, 21:48     мультиоператор - вохможно ли? #32
Цитата Сообщение от Van111 Посмотреть сообщение
сделал через typedef
Читаю и понимаю, что ничего не понимаю.
Во-первых, тайпдеф тут вообще не при чем. В данном случае зачем-то использован сишный прием, чтобы при объявлении переменной не писать union, поправте, если гоню.
Во-вторых... Нет, тут от меня не будет ничего адекватного. Вся тема, да и приведенный код - какие-то ошметки задачи, в которой непонятно что требуется, непонятно что получилось и непонятно как этим пользоваться.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
12.01.2013, 21:55  [ТС]     мультиоператор - вохможно ли? #33
Цитата Сообщение от 0x10 Посмотреть сообщение
Во-первых, тайпдеф тут вообще не при чем. В данном случае зачем-то использован сишный прием, чтобы при объявлении переменной не писать union, поправте, если гоню.
вы не заметили что я после union ничего не ставил - это позволило уменьшить длину пути доступа к данным т. е.
вместо
x.a.b или x.a.с
я смог сразу поставить
x.b или x.c

Цитата Сообщение от 0x10 Посмотреть сообщение
Во-вторых... Нет, тут от меня не будет ничего адекватного. Вся тема, да и приведенный код - какие-то ошметки задачи, в которой непонятно что требуется, непонятно что получилось и непонятно как этим пользоваться.
вам пользоватся не обязательно, задача 22 кб(код)) вылаживать? требуется - заменить vector <void*> и приведение типов на более красивую запись. получилось - сокращёный доступ и более эстетическая запись
Yandex
Объявления
12.01.2013, 21:55     мультиоператор - вохможно ли?
Ответ Создать тему
Опции темы

Текущее время: 20:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru