假设我们有一个这样的类型:

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));

09-11 17:32