Недавно я практиковался в управлении несколькими объектами и рисовании их в C ++ с использованием библиотеки SFML. Я хотел, чтобы мои текстуры и будущие ресурсы были более пригодными для повторного использования, поэтому я решил использовать библиотеку Thor , которая очень хорошо соответствует моим потребностям.
Итак, я написал первые несколько строк кода на основе того, что вы можете найти в этого урока , а компилятор всегда говорит:
main.cpp|12|error: 'textures_holder' does not name a type
Эта строка выдает ошибку:
textures_holder.acquire("Dirt", thor::Resources::fromFile<sf::Texture>("Textures\\dirt_block.png"));
Я использую Code :: Blocks IDE с компилятором MinGW и SFML 2.5.0.
Вот мой main.cpp и заголовочный файл, который содержит внешний объект:
//...
#include <Thor/Resources.hpp>
#include "Dirt_Block.h"
using namespace std;
//Adding textures to the texture library
//THIS LINE GIVES AN ERROR
textures_holder.acquire("Dirt", thor::Resources::fromFile<sf::Texture>("Textures\\dirt_block.png"));
//Rest of code...
Dirt_Block.h (только верхняя часть):
#ifndef DIRT_BLOCK_H
#define DIRT_BLOCK_H
#include <SFML\Graphics.hpp>
#include <vector>
#include <Thor/Resources.hpp>
#include <Thor/Resources/SfmlLoaders.hpp>
extern sf::Vector2u screenRes;
extern thor::ResourceHolder<sf::Texture, std::string> textures_holder;
//Rest of the code
Я хотел бы знать, что является причиной этой ошибки, и, возможно, помочь другим, которые могут испытывать аналогичные проблемы разочарования. Спасибо за помощь.
РЕДАКТИРОВАТЬ:
Как указано в комментарии, я объявил несколько extern int переменных в Dirt_Block.h , так что теперь это выглядит так:
//...
extern int test_int_up;
extern sf::Vector2u screenRes;
extern thor::ResourceHolder<sf::Texture, std::string> textures_holder;
extern int test_int_d;
//...
А затем присвоил им некоторое значение в main.cpp :
//...
test_int_up = 55;
test_int_d = 55;
//Adding textures to the texture library
textures_holder.acquire("Dirt", thor::Resources::fromFile<sf::Texture>("Textures\\dirt_block.png"));
//...
Но компилятор выдает ошибку:
main.cpp|9|error: 'test_int_up' does not name a type
main.cpp|10|error: 'test_int_d' does not name a type
main.cpp|12|error: 'textures_holder' does not name a type