假设我们有一个这样的类型:
struct MyType
{
OtherType* m_pfirst;
OtherType* m_psecond;
OtherType* m_pthird;
....
OtherType* m_pn;
};
分配给成员的安全方法吗?
MyType inst;
....
OtherType** pOther = &inst.m_pfirst;
for (int i = 0; i < numOfFields; ++i, ++pOther)
{
*pOther = getAddr(i);
}
最佳答案
如果以这种方式命名字段,那么您别无选择:
inst.m_pFirst = getaddr(0);
inst.m_pSecond = getaddr(1);
...
更好的结构可能是:
struct MyType {
OtherType *m_pFields[10];
}
...
for (int i=0; i<10; i++) {
inst.m_pFields[i] = getaddr(i);
}
标记C ++时,可以使用ctor:
struct MyType {
OtherType *m_pFirst;
OtherType *m_pSecond;
MyType(OtherType *p1,OtherType *p2): m_pFirst(p1), m_pSecond(p2) {};
};
...
MyType inst(getaddr(0),getaddr(1));