我的问题是我不知道如何关联函数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;
}
我有点困惑,可能还没有理解客观编程。谢谢你的帮助。
答案 0 :(得分:0)
- &gt; operator用于访问指针成员,而不是访问非指针对象的指针成员。所以你应该使用:
Project_cucumber
如果框是指针,那么应该使用你的方式。
Run Gradle task 'Project: compileCucumberGroovy'