- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这门课
#ifndef WRAPPED_TEXTURE_H
#define WRAPPED_TEXTURE_H
#include <SDL2/SDL.h>
#include "../ui/utils/texture.h"
// color keying - CHROMA KEY!!!!
class WrappedTexture {
public:
WrappedTexture() {
raw_texture = NULL;
width = 0;
height = 0;
bound_renderer = NULL;
}
WrappedTexture(SDL_Renderer* bound_renderer) {
raw_texture = NULL;
width = 0;
height = 0;
this->bound_renderer = bound_renderer;
}
~WrappedTexture() {
printf("Freeing resources!");
free();
}
void free() {
if (raw_texture != NULL) {
SDL_DestroyTexture(raw_texture);
raw_texture = NULL;
width = 0;
height = 0;
}
}
void load_from_file(std::string path) {
free();
TextureLoader::load_texture_chroma(path, bound_renderer, NULL, std::vector<Uint8> { 0, 0xFF, 0xFF}, *this);
}
void render(int x, int y) {
SDL_Rect render_frame = { x, y, width, height };
SDL_RenderCopy(bound_renderer, raw_texture, NULL, &render_frame);
}
int get_width() {
return width;
}
int get_height() {
return height;
}
void set_width_height(int width, int height) {
this->width = width;
this->height = height;
}
void set_raw_texture(SDL_Texture* raw_texture) {
this->raw_texture = raw_texture;
}
private:
SDL_Texture* raw_texture;
int width;
int height;
SDL_Renderer* bound_renderer;
};
#endif
而且我有实用程序类,其中包含对我有用的功能。
#ifndef TEXTURE_H
#define TEXTURE_H
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <vector>
#include "image.h"
#include "../../domain/WrappedTexture.h"
class TextureLoader {
public:
static WrappedTexture *create_wrapped_texture(int width, int height, SDL_Texture* raw, SDL_Renderer* render) {
WrappedTexture* wt = new WrappedTexture(render);
wt->set_width_height(width, height);
wt->set_raw_texture(raw);
return wt;
}
static SDL_Texture* load_texture_chroma(std::string path,
SDL_Renderer* renderer, SDL_Surface* screen_surface,
std::vector<Uint8> pixelColor, WrappedTexture& output) {
int width = -1;
int height = -1;
SDL_Texture* new_texture = NULL;
SDL_Surface* loaded_surface = ImageLoader::load_image(path,
screen_surface);
if (loaded_surface == NULL) {
printf("Unable to load image %s! SDL_image Error: %s\n",
path.c_str(), IMG_GetError());
} else {
SDL_SetColorKey(loaded_surface, SDL_TRUE,
SDL_MapRGB(loaded_surface->format, pixelColor[0],
pixelColor[1], pixelColor[2]));
new_texture = SDL_CreateTextureFromSurface(renderer,
loaded_surface);
if (new_texture == NULL) {
printf("Unable to create texture %s! SDL Error: %s\n",
path.c_str(), SDL_GetError());
} else {
width = loaded_surface->w;
height = loaded_surface->h;
}
SDL_FreeSurface(loaded_surface);
}
if (width != -1 && height != -1 && &output != NULL) {
output = *TextureLoader::create_wrapped_texture(width, height, new_texture, renderer);
}
return new_texture;
}
};
#endif
但我在行 incomplete type 'TextureLoader' used in nested name specifier
void load_from_file(std::string path) {
free();
TextureLoader::load_texture_chroma(path, bound_renderer, NULL, std::vector<Uint8> { 0, 0xFF, 0xFF}, *this); // error
}
我试图在 WrappedTexture
类中声明 class TextureLoader
并尝试在 TextureLoader
中声明 class WrappedTexture
但它没有'帮助。
有什么问题?
最佳答案
问题可能出在你对类的引用,在它被完全声明之前:
output = *TextureLoader::create_wrapped_texture(width, height, new_texture, renderer);
此时 TextureLoader
类还没有完全声明。尝试将函数定义移至 .cpp
文件。您的所有功能都在 header 中实现是否有原因?
关于c++ - 嵌套名称说明符中使用的不完整类型 'TextureLoader',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31588663/
我得到以下声明: // file MadaPacket.h class MadaPacket { // .... public: inline static bool word_is_header
目录 1.语法 2.关键词decltype 1.语法 decltype ( 实体 ) (1) (C++11 起) decltype
由于某些原因,我一直认为演绎指南必须相同noexcept -它们所引用的构造函数的性质。例如: template struct clazz { clazz(const T &) noexcep
我不确定成员 var isMouseOverYard 的正确访问说明符。在代码片段中,我没有从 House 继承的计划。选项 1 与基类更一致(如果我要从任一类继承,我可以检查鼠标是否在对象/院子上)
我可以声明 foo(const T& var) 这样我就知道 var 不会被改变。 指针的等效格式为 foo(const T* var)? 过去我尝试过那些,与 iterator/const_iter
我已经为这个问题搜索了几个小时,但仍然无法解决。 #include using namespace std; enum color { brown, green, orange, red, yell
我有用户定义的数据类型 typedef Unsigned int8 COMMAND_TYPE[6]; 现在我有类似的功能 ConnectCommand(COMMAND_TYPE const comm
说明符 %[^s] 有什么用? s 是一个变量。 在什么情况下我可以使用这个说明符? 最佳答案 scanf 的 %[ 格式说明符将匹配一系列字符,这些字符与 [ 和 ]< 之间列出的字符相匹配。如果第
#include int main() { char a[8]; printf("%d\n",a) ; return 0; } 对于上面的代码,输出是这
很抱歉这个“另一个”sscanf 问题,但我无法通过实验找到任何解决方案。 这是一个字符串,我想解析并提取 2 个由“:”分隔的子字符串: char *str = "tag:R123:P1234";
所以我在维基百科的一篇文章(粗略翻译)中遇到了以下定义: Modifier (programming) - element of source code being a phrase of given
[basic.link]/6 (我的重点): The name of a function declared in block scope and the name of a variable dec
我正在尝试定义我自己的数据类型(称为 sfloat),它类似于 float ,但使用不同数量的尾数位和指数位以更好地适应我的数据范围和精度。目标是定义一种新的数据类型,可以替代现有应用程序中的 flo
请看下面的代码: #include struct A { A(int, int) {} }; struct tag {}; template struct is_noexcept { st
如果这是一个无知的问题,请原谅我,但我仍在思考何时以及如何使用 constexpr 说明符。 (使用 msvc 14 编译)。我正在研究一个简单的基类,它允许您将任意对象包装到“constexpr 对
考虑以下函数: // Declaration in the .h file class MyClass { template void function(T&& x) const; }; /
以下面的示例代码为例: void test(const Item& item = Item()) { ... } 假设一旦 item 被传递给函数,this 就不能抛出。 问题是:函数应该标记为
我听说 noexcept 关键字更像是“它永远不应该抛出异常”而不是“它不会”。 如果我不确定是否抛出异常,我认为使用 noexcept 关键字不是很好,但是 noexcept 关键字有时
最近,我在阅读API of boost::optional 时发现: T const& operator *() const& ; T& operator *() & ; T&&
如果覆盖 ToString在一个类型中 type TestMe ()= override __.ToString() = null 然后我通过 "%A" 输出它说明符 printfn "*%A
我是一名优秀的程序员,十分优秀!