Windows 7上的Visual Studio 2010 Ultimate.
编辑:这是一个非常古老的代码,我没有写,一个很大的老混乱,深深植根于代码库.这不是很快就会改变的.虽然,我很高兴你们都确认了我的想法:这本身应该是不可能的.
我有equivelant代码:
typedef std::vector<Widget*> widget_vector_t;
typedef struct
{
widget_vector_t widget_array_[SOME_SIZE_CONSTANT];
} WIDGET_STRUCT;
Run Code Online (Sandbox Code Playgroud)
然后,在一个类中,我有一个WIDGET_STRUCT成员:
WIDGET_STRUCT widgets_;
Run Code Online (Sandbox Code Playgroud)
在一些成员方法的正文中,我看到了......这...... 事:
Widget *p = widgets_.widget_array_[SOME_INDEX_CONSTANT];
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我的理解是这是将Widget指针的向量分配给Widget指针.
它有效.
STL向量是否提供了一些强制转换操作符或返回向量中第一个元素的东西?
我想通了,我很尴尬.
实际的代码有一大堆可怕的命名typedef,驼峰套装和缩短,所有这些都在一个地方,并且它的格式很差.毋庸置疑,这是一个婊子,所有的名字都非常相似.
struct中的类型实际上是一个指针数组,"Widget*"的typedefed与Widget指针的向量名称非常相似.
代码行为完全正常,现有的代码库是一个热气腾腾的堆,问题最终在于椅子和键盘之间.
感谢参与.