c++ - 参数传递的不同矩阵结构

标签 c++ pointers parameters struct matrix

我在 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);
}

我怎样才能做到?

提前致谢。

最佳答案

如果结构都具有相同的成员,那么为什么要在子类中重新定义它?

我怀疑答案是“不同的矩阵大小”意味着它们有一个静态声明大小不同的二维数组成员,换句话说,它们没有相同的成员。

三个解决方案。

  • 只有一个结构定义并在运行时分配所需的矩阵大小
  • 虚拟访问函数。使用返回矩阵的虚函数创建一个基本结构,并且只能通过它们访问矩阵。
  • 模板化函数。

如果您的结构的成员都具有相同的名称,那么这就足够了:

template <typename STRUCT_T>
void GenericObject::SetTexture(struct STRUCT_T *_myStructOffset)
{
...
}

很明显,因为它是一个模板,所以函数定义必须出现在您的头文件中而不是 .cpp 中。

关于c++ - 参数传递的不同矩阵结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11444077/

相关文章:

c++ - 使用 std::vector<T*> 控制内存

java - Http Servlet 请求在读取一次后从 POST 正文中丢失参数

c++ - CNN - 卷积层的反向传播

c++ - Glvalue 引用一个基类子对象

c++ - 在 x86 和 arm7 平台的 Windows 10 Store 中发布 Qt 应用程序

C - 初始化结构数组

c++ - 一旦函数名称被声明为 'virtual' ,它是否可以再次变为非虚拟的?

C++ 将静态二维 double 组转换为 double **

parameters - 如何解决 Agda 模块参数不灵活的问题?

c# - Powershell哈希表作为C#中自定义cmdlet的参数