Помогите с инициализацией массива структур во время объявления
Код:
typedef struct testone
{
const char * Funcname;
int param[3];
}IN_TYPE;
typedef struct testALL
{
const char * DeviceName;
TEST_ONE FunctionArray[10];
}OUT_TYPE;
{
const char * Funcname;
int param[3];
}IN_TYPE;
typedef struct testALL
{
const char * DeviceName;
TEST_ONE FunctionArray[10];
}OUT_TYPE;
Код:
OUT_TYPE FunctionOneArray[]=
{
{"Device1",
{
{"Function1", {0,0,0} },
{"Function2", {0,0,0} },
{"Function3", {0,0,0} }
},
}
}
{
{"Device1",
{
{"Function1", {0,0,0} },
{"Function2", {0,0,0} },
{"Function3", {0,0,0} }
},
}
}
Может кому так понятнее...
Код:
{"Device1", {{"Fun", {0,0,0} }, {"Fun", {0,0,0} }, {"Fun", {0,0,0} }}}
Спасибо!!!!!
Ошибка, вместо TEST_ONE следует писать IN_TYPE. Но сути дела это не меняет...
а конструктор, не?
ну а если уж мешать все, как то так:
Код:
typedef struct TestOne
{
TestOne(unsigned int size)
{
name = NULL; Param = new int[size];
}
char* name;
int* Param;
}IN_TYPE;
typedef struct TestAll
{
TestAll(char* nDevice, char* nName, unsigned int size)
{
device = nDevice;
p = new IN_TYPE(size);
p->name = nName;
for(unsigned int idx=0; idx<size; idx++)
{
p->Param[idx] = idx+1;
}
}
char* device;
IN_TYPE* p;
}OUT_TYPE;
int main()
{
OUT_TYPE ob("Device1","Name1", 3);
cout << ob.device << "\t" << ob.p->name << "\t";
for(int idx=0; idx < 3; idx++)
{
cout << ob.p->Param[idx] << "\t";
}
delete[] ob.p->Param;
delete[] ob.p;
cout << endl;
return 0;
}
{
TestOne(unsigned int size)
{
name = NULL; Param = new int[size];
}
char* name;
int* Param;
}IN_TYPE;
typedef struct TestAll
{
TestAll(char* nDevice, char* nName, unsigned int size)
{
device = nDevice;
p = new IN_TYPE(size);
p->name = nName;
for(unsigned int idx=0; idx<size; idx++)
{
p->Param[idx] = idx+1;
}
}
char* device;
IN_TYPE* p;
}OUT_TYPE;
int main()
{
OUT_TYPE ob("Device1","Name1", 3);
cout << ob.device << "\t" << ob.p->name << "\t";
for(int idx=0; idx < 3; idx++)
{
cout << ob.p->Param[idx] << "\t";
}
delete[] ob.p->Param;
delete[] ob.p;
cout << endl;
return 0;
}
Такой геморрой обязательно, потому что это как раз и С, а не С++))))))