Название: классы&ссылки Отправлено: vanessa от Май 03, 2011, 13:59 Код: class RefTest Вот такая слегка запутанная конструкция инициализации ссылки... Есть ли вариант попроще ? Зачем оно нужно ? например для того чтобы иметь доступ к данным класса разными методами, внутри методов класса хочется работать с именами переменных, а наружу выдавать массив этих переменных. Название: Re: классы&ссылки Отправлено: Пантер от Май 03, 2011, 14:05 Что-то оно ужасно выглядит и профита я не вижу.
Название: Re: классы&ссылки Отправлено: RedDog от Май 03, 2011, 14:15 Мне почему то всегда казалось, что член класса не может быть ссылкой
Название: Re: классы&ссылки Отправлено: Пантер от Май 03, 2011, 14:19 Может лучше emun использовать? Если я, конечно, правильно понял.
Код
Название: Re: классы&ссылки Отправлено: vanessa от Май 03, 2011, 14:32 Может лучше emun использовать? Если я, конечно, правильно понял. Код
нет, хочется сдетать так Код: ..... Код: ..... но потом еще нужно сделать примерно такой метод Код: int* RegTest::getValues() {return array;} Название: Re: классы&ссылки Отправлено: Пантер от Май 03, 2011, 14:35 Куча ссылок проще не смотрится.
Название: Re: классы&ссылки Отправлено: Igors от Май 03, 2011, 14:53 нет, хочется сдетать так Сомнительное хотение попахивающее "кодированием". Видно что var0 и var1(2) неоднообразны, вероятно хранят разные данные. Если есть нужда иметь их также в виде массива, лучше такКод: ..... Код Чтобы по-человечески написать напр Код
Название: Re: классы&ссылки Отправлено: vanessa от Май 03, 2011, 15:22 2 Igors
Согласен, Ваш вариан лучше чем тот, что я придумал. Спасибо за подсказку, но тогда есть вопрос: что это за директивы #pragma pack(push, 4) и #pragma pack(pop) Зачем они и какие ограничения они накладывают ? компилятор - gcc Название: Re: классы&ссылки Отправлено: Пантер от Май 03, 2011, 15:28 Это указывает выравнивание.
Не советую я использовать такой подход. Делай нормально. Название: Re: классы&ссылки Отправлено: Igors от Май 03, 2011, 15:35 #pragma pack(push, 4) Ну если все "только int" - то можно и без них, но вот др. случайи #pragma pack(pop) Зачем они и какие ограничения они накладывают ? компилятор - gcc Код Здесь уже без директивы выравнивания mData может находиться совсем не на том месте что mArray[1] (напр если выравнивание 2). То есть если хотите обращаться к данным "и так и сяк" - подчерните pack'ом Название: Re: классы&ссылки Отправлено: vanessa от Май 03, 2011, 15:40 Это указывает выравнивание. нормально это такНе советую я использовать такой подход. Делай нормально. Код: array[var_0]=array[var_1]+array[var_2]; но это сильно усложнит мою программу. и тут дело даже не в усложнении как-таковом, это прога, она написана и оттестирована, но только на другом языке. Тепер ее нужно переписать на с++. но прога эта оперирует порядка несколькими сотнями переменных, причем там есть средства автоматического складывания этих переменных в массив. вот я и ищу элегантный способ определить несколько сот переменных в классе да еще так, чтоб они аккуратно лежали в массиве..... понравился вариант с ссылками но пугает страшная конструкция инициализации этих ссылок. Вариан что предложил Igors вроде свободен от этого недостатка но наверное у него тоже есть свои минусы........ Цитировать Ну если все "только int" - то можно и без них, но вот др. случай в пределах массива - все одного типа, но таких юнионов планируется четыре: bool, qint16, qint32 и doubleНазвание: Re: классы&ссылки Отправлено: Пантер от Май 03, 2011, 15:45 Код: struct YouArray { Название: Re: классы&ссылки Отправлено: Igors от Май 03, 2011, 17:43 Код: struct YouArray { . Вариан что предложил Igors вроде свободен от этого недостатка но наверное у него тоже есть свои минусы........ :) Любая вещь имеет свои плюсы и минусы - это нормально. Членами union могут быть только POD (простые) типы, напр так нельзя Код А сама конструкция и #pragma pack 100% легальны (просто не очень популярны) Название: Re: классы&ссылки Отправлено: vanessa от Май 03, 2011, 18:38 Цитировать Любая вещь имеет свои плюсы и минусы - это нормально. Членами union могут быть только POD (простые) типы, напр так нельзя Меня это полностью устраивает, мало того с самого начала была подобная мысль но я ее отвергнул потому как информация про то что юнионам и структурам можно не давать имен как-то прошла мимо меня, ну а писать длинные имена мне не хотелось.... |