gpt4 book ai didi

c++ - 尝试使用类 (SDL)

转载 作者:太空宇宙 更新时间:2023-11-04 12:55:51 26 4
gpt4 key购买 nike

我的问题是我不知道如何与函数 GetTexture 和结构 SDL_Rect * rect (public),类 Texture 的成员相关

在主类私有(private)部分中,我声明:

Texture box("textures/box.png",100, 100, 20, 20);

下面的语句被放在了 Main 类的 MainLoop 函数中:

SDL_RenderCopy(renderer, box.GetTexture(), NULL, box->rect);  

该行抛出错误:

\Main.cpp|28|error: '((Main*)this)->Main::box' does not have class type|

\Main.cpp|28|error: invalid use of member function (did you forget the '()' ?)|

\Main.cpp|28|error: base operand of '->' is not a pointer|

这是 Texture.h 代码:

#ifndef TEXTURE_H
#define TEXTURE_H
#include <string>
#include <SDL.h>
#include <SDL_image.h>

using namespace std;

class Texture
{
public:
Texture(string path, int x, int y, int w, int h);
virtual ~Texture();

SDL_Texture GetTexture();

SDL_Rect * rect;
protected:
private:
SDL_Texture * texture;
};

#endif // TEXTURE_H

和Texture.cpp:

#include "Texture.h"

using namespace std;

Texture::Texture(string path, int x, int y, int w, int h)
{
texture = NULL;
texture = IMG_LoadTexture(renderer, path.c_str());
rect.x = x;
rect.y = y;
rect.w = w;
rect.h = h;
}

Texture::~Texture()
{
//dtor
}

SDL_Texture Texture::GetTexture()
{
return texture;
}

我有点困惑,可能根本还没有理解目标编程。感谢您的帮助。

最佳答案

-> 运算符用于访问指针成员,而不是访问非指针对象的指针成员。所以你应该使用:

box.rect

如果 box 将是一个指针,则应该使用您执行此操作的方式。

Texture* box = new Texture;
box->rect

关于c++ - 尝试使用类 (SDL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718981/

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