参数传递的不同矩阵结构
Different matrix structs passed by parameter
我在GenericObject类中有一个函数需要获取一个结构作为参数,但这个结构将由其子类提供。所有这些结构都有相同的成员,但它们的矩阵大小不同。
此函数获取结构(参数明显错误):
void GenericObject::SetTexture(struct* _myStructOffset)
{
for (int i = 0; i < stateNumber; i++)
{
for (int j = 0; j < indexNumber; j++)
{
SetTextureOffset(i, j, _myStructOffset[i][j]->xTex0, _myStructOffset[i][j]->xTex1, _myStructOffset[i][j]->yTex0, _myStructOffset[i][j]->yTex1, 100/*_myGenericOffset->imageW*/, 100/*_myGenericOffset->imageH*/);
}
GetMyAnimatedSprite()->SetAnimationToList();
}
}
结构示例:
struct ButtonsData
{
float xTex0;
float yTex0;
float xTex1;
float yTex1;
}
ButtonOffset1[3][1]
;
并且应该以这样的方式工作:
void Button::SetTexture()
{
GenericObject::SetTexture(&ButtonOffset1);
}
我该怎么做?
提前谢谢。
如果结构都有相同的成员,那么为什么要在子类中重新定义它呢?
我怀疑答案是"不同的矩阵大小"意味着它们有一个不同静态声明大小的2D数组成员,换句话说,它们没有相同的成员。
三种解决方案。
- 只有一个结构定义,并在运行时分配所需的矩阵大小
- 虚拟访问器功能。使用返回矩阵的虚拟函数创建一个基结构,并仅通过它们访问矩阵
- 为函数模板化
如果你的结构成员都有相同的名字,那么这就足够了:
template <typename STRUCT_T>
void GenericObject::SetTexture(struct STRUCT_T *_myStructOffset)
{
...
}
显然,由于它是一个模板,因此函数定义必须出现在头文件中,而不是.cpp.
谢谢@Adam!我将把我得到的决议放在这里进行进一步研究。
将函数模板化确实是一种选择,但我对将其与structs一起使用感到困惑。经过昨天和今天的一些测试,我得到了这个工作版本:
template <typename STRUCT_T>
void SetTexture(STRUCT_T _myStructOffset[][])
{
...
}
还有一个示例结构声明:
struct Buttons
{
float xTex0;
float yTex0;
float xTex1;
float yTex1;
}
ButtonOffset1[3][1]
;
非常感谢。
相关文章:
- 如何传递带有通过引用传递的结构参数的函数?
- 如何在方法中传递结构参数
- C++:如何做一个链表,结构作为参数传递?
- 是否可以将结构的成员变量作为参数传递
- 在模板方法 c++ 中传递结构参数
- 将未知结构(在运行时)作为模板参数传递
- 将模板参数传递到内部结构时出错
- POSIX线程,将多个参数传递给具有结构的函数
- 如果结构作为递归函数中的参数传递,如何初始化结构的成员变量
- 如何将参数从结构正确传递到函数
- C++,将结构特征作为参数传递到函数中
- 结构的匿名(?)初始化作为C 03中的参数传递
- C++将结构的数组作为函数参数传递
- 将泛型结构作为接口中的参数传递
- 参数传递的不同矩阵结构
- C++ 将结构函数作为继承结构中函数的参数传递
- 在 C++11 中将结构作为输出参数传递
- 如何使用 boost::bind 将类/结构实例作为参数传递给回调
- 解析结构并作为指针参数传递
- 将结构参数传递给结构内的函数