Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

инициализация union или передача неименованного массива

6.8K
29 июля 2008 года
artemkaint
60 / / 12.07.2006
здравствуйте...
вопрос 0:
есть тип:
typedef union Tuple4f_t
{
struct
{
double X, Y, Z, W;
} s;

double T[4];
} Tuple4fT;

в некотором классе я задаю переменную данного типа...как мне провести ее инициализацию в конструкторе? (вариант for(i=...) отпадает)

если это невозможно..то - вопрос 1:
создается класс...в нем есть массив...соответсвенно его надо проинииализировать...могу ли я в конструктор класса отправить не именованный массив ?
типа такого
class TypeClass1
{
public:
TypeClass1(void){};
~TypeClass1(void){];
TypeClass1(int *mas){}
private:
int b[5];
}


TypeClass a ( {1,2,3,4,5} );

Спасибо заранее
288
29 июля 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: artemkaint

в некотором классе я задаю переменную данного типа...как мне провести ее инициализацию в конструкторе? (вариант for(i=...) отпадает)



Смотря чем она должна быть проинициализирована. Если нулями, то можно ZeroMemory или memset.

Цитата: artemkaint

создается класс...в нем есть массив...соответсвенно его надо проинииализировать...могу ли я в конструктор класса отправить не именованный массив ?



Подобная тема уже поднималась, попробуйте поискать. Сейчас если сам найду, выложу ссылку.

6.8K
29 июля 2008 года
artemkaint
60 / / 12.07.2006
нет...проинициализировать нужно конкретными числами....допустим если вне класса писать переменную..то можно просто написать

Matrix4fT a = { 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };

надо как то умудриться и в классе так сделать

на счет массива действительно нашел...жалко...
7.2K
29 июля 2008 года
polaroid
94 / / 05.07.2008
Ну попробуй создать в struct'e конструктор, в котором опишешь инициализацию. и потом если пишешь на C++ вызови new
288
29 июля 2008 года
nikitozz
1.2K / / 09.03.2007
Как вариант (но правда память расходуется нерационально):
в конструкторе объявляете локальную переменную и инициализируете ее чем надо, например
 
Код:
Matrix4fT a = { 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };

А потом той переменной этого же типа, которая является членом класса, присваиваете (или memcpy) эту объявленную локальную переменную (в нашем примере a).
6.8K
29 июля 2008 года
artemkaint
60 / / 12.07.2006
да я так тоже сделал..но что-то не очень мне это понравилось...хотел красиво....ясно спасибо - не красиво зато реализуемо
87
29 июля 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: artemkaint
если это невозможно..то - вопрос 1:
создается класс...в нем есть массив...соответсвенно его надо проинииализировать...могу ли я в конструктор класса отправить не именованный массив ?



Не для практического применения, а в качестве юмора:

Код:
#include <string>
#include <iostream>

using namespace std;

class A
{
public:
    string s;
    A(const char *pcs):s(pcs, pcs + 4)
    {
    }
};

int main()
{
    A a0("\x00\x01\x7F\x04");
    A a1("\x06\x07\x08\x09");
    cout << (int)a0.s[2] << endl;
    cout << (int)a1.s[1] << endl;
    return 0;
}

вот класс, в нем эээ... ну не совсем массив, но что-то его заменяющее, ну и нигде нет имени массива, которым инициализирована строка :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог