我有一个看起来像这样的结构。
typedef struct superCellBoxStruct {
float_tt cmx,cmy,cmz; /* fractional center of mass coordinates */
float_tt ax,by,cz;
boost::shared_ptr<std::vector<atom>> atoms; /* contains all the atoms within the super cell */
} superCellBox;
现在,当我想访问atoms[i]
时,我得到了
错误:无效使用'boost :: detail :: sp_array_access&gt; :: type {aka void}'
在我的应用程序中传递共享向量的正确方法是什么,或者访问其运算符[]的正确方法是什么?
答案 0 :(得分:3)
选择一个:
(*atoms)[i]
atoms->operator[](i);
我通常选择第一个,但它们都是等价的。
作为旁注,根据我的经验,这样的shared_ptr<vector>
通常是设计不良的症状,也许您想将整个superCellBox
放在shared_ptr
?
此外,这不是C,请使用struct name {};
代替typedef struct tagName {} name;