尝试使用类(SDL)

时间:2017-10-12 21:12:57

标签: c++ sdl

我的问题是我不知道如何关联函数GetTexture和struct SDL_Rect * rect(public),类Texture

的成员

在Main类私有部分中我声明:

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

以下短语放在Main class 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;
}

我有点困惑,可能还没有理解客观编程。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

- &gt; operator用于访问指针成员,而不是访问非指针对象的指针成员。所以你应该使用:

Project_cucumber

如果框是指针,那么应该使用你的方式。

Run Gradle task 'Project: compileCucumberGroovy'