gpt4 book ai didi

c++ - 将类型转换/更改为指向类型的指针 (SDL_Rect)

转载 作者:搜寻专家 更新时间:2023-10-31 00:58:45 25 4
gpt4 key购买 nike

我正在尝试将 SDL_Rect 传递给 SDL_RenderCopy,它采用 SDL_Rect 的地址。我有 SDL_Rect 我正在尝试传递存储在 Shot.h 文件中的我的私有(private)类(称为“Shot”)变量。

这一切都发生在 Shot.cpp

我的做法:

SDL_RenderCopy(other args..., &Shot::rect)

但是 visual studio 提示说

"argument of type SDL_Rect Shot::* is incompatible with param of type const SDL_Rect *"

我确实有点理解这个错误,但不太明白如何将 Shot::rect 转换为一个简单的地址...

最佳答案

为了能够使用&Shot::rectrect 需要是Shot静态成员 > 类。

要将指针传递给非静态成员,可以使用以下方法:

Shot sh;
SDL_RenderCopy(other args..., &sh.rect);

否则将无法知道要使用哪个 Shot 对象的哪个 rect


如果您想将一个类的成员传递给一个函数,该函数将需要知道它必须使用该类的哪个对象。

因此,您必须传递将使用 rect 的对象作为参数的一部分:上例中的 &sh.rect

如果您使用&Shot::rect,则不知道使用哪个对象,因此rect 需要是静态成员。这样一来,该类的所有对象只有一个 rect

例如,如果类Shot有多个对象:

Shot sh1;
Shot sh2;

函数需要知道使用哪个矩形:sh1.rectsh2.rect

如果 SDL_RenderCopy() 是从 class Shot 中调用的(或者是一个成员函数),rect 可以像这样直接传递:

SDL_RenderCopy(other args..., &rect);

关于c++ - 将类型转换/更改为指向类型的指针 (SDL_Rect),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34841271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com