我有这个结构:
template<typename T>
struct static_type_array
在其中我有这些功能:
inline T* Get(s32 Index)
inline const T* Get(s32 Index) const
inline T* operator[](s32 Index)
inline const T* operator[](s32 Index) const
我创建了这些变量:
static_type_array<vertex> Vertices;
static_type_array<u32> Indices;
问题是,当我打电话给Indices[Index]
时,我接触到了这个功能:
static_type_array<u32>::operator[]...
正如预期的那样......但是在这个函数(operator[]
)中我用调用得到的索引调用Get
,这就是:
static_type_array<vertex>::Get(s32 Index)...
这真奇怪.. 我试图弄清楚发生了什么,我看到了一些东西......
此代码:
inline T* operator[](s32 Index)
{
T* Result = Get(Index);
return Result;
}
将生成对相应函数(<u32>
)的调用,而此代码为:
inline T* operator[](s32 Index)
{
return Get(Index);
}
将生成对错误函数(<vertex>
)...
我想也许它是内联但我尝试删除它而不是那个。
知道我的代码是怎么回事?
编辑:如果我遗漏任何信息,请告诉我。