-3
私は現在、SFMLとC++を使用している小さなゲームに取り組んでいますが、問題があります。私はcharacter.hの中に2つの関数を持つクラスCharacterを持っていますが、他のファイル(Game.cpp)でこれらの関数にアクセスしようとすると、一方が完璧に動作し、もう一方は存在しないように動作します。これは私の最初の投稿なので、コードを正しく表示する方法がわからないので、十分分かりませんか教えてください。 皆さん、ありがとうございました。はクラス内の関数です:1つは見えますが、もう1つは無視されます
/****CHARACTER.H****/
#ifndef CHARACTER_H
#define CHARACTER_H
#include <SFML/Graphics.hpp>
using namespace std;
class Character{
public:
Character();
~Character();
void initPlayer(string& fileName, sf::IntRect rect);
void moveCharacter();
sf::Sprite m_sprite;
private:
sf::VertexArray m_vertices;
sf::Texture m_texture;
};
#endif
/****CHARACTER.CPP*****/
#include "/home/hichem/C++/sfml/Game Engine/character.h"
#include "string"
#include <iostream>
using namespace std;
Character::Character(){
}
Character::~Character(){
}
void Character::initPlayer(string& fileName, sf::IntRect rect){
if (!m_texture.loadFromFile(fileName, rect)){
cout << "failed to load image" << endl;
}
m_sprite.setTexture(m_texture);
m_sprite.setPosition(sf::Vector2f(400, 200));
}
void Character::moveCharacter(){
}
/****GAME.H****/
#ifndef GAME_H
#define GAME_H
#include <SFML/Graphics.hpp>
#include "character.h"
#include "tileMap.h"
#include "string"
class Game: public sf::Transformable{
public:
Game();
~Game();
void run(sf::RenderWindow &window);
private:
void event(sf::RenderWindow &window);
void update();
void draw(sf::RenderWindow &window);
TileMap carte;
Character player;
const int level_1[128] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
};
#endif // GAME_H
/****GAME.CPP****/
#include "Game.h"
using namespace std;
Game::Game(){
string a = "images/tiles.png";
carte.load(a, sf::Vector2u(50, 50), level_1, 16, 8);
string b = "images/player.png";
/*FUNCTION THAT WORKS FROM CHARACTER.H*/
player.initPlayer(b, sf::IntRect(0,0,50,50));
}
Game::~Game(){
//dtor
}
void Game::event(sf::RenderWindow &window){
sf::Event event;
while (window.pollEvent(event)){
if (event.type == sf::Event::Closed)
window.close();
/*FUNCTION THAT DOES NOT WORKS FROM CHARACTER.H*/
player.moveCharacter();
}
}
void Game::update(){
}
void Game::draw(sf::RenderWindow &window){
window.clear();
window.draw(carte);
window.draw(player.m_sprite);
window.display();
}
void Game::run(sf::RenderWindow &window){
while(window.isOpen()){
event(window);
update();
draw(window);
}
}
に間違ったパスをリンクしていることに気づいていなかったので、何問題?それはコンパイルされていませんか?それとも何もしないのですか? –
**テキスト**となっているコンパイルエラーや誤った出力をコピーして、質問の本文に貼り付けます。 –
あなたのcharacter.hヘッダの上部に(インクルードガード内に)#errorを落とし、コンパイル時にcharacter.cppがあなたが思っているヘッダを引っ張っていることを確認してください。それはそれのようには見えず、 '#include' hyjinx /相違点で判断すると、あなたもそれが疑わしいかもしれません。あなたのエラーはマークされた行ではありません。元のエラーは、メンバーが存在しないことを示すcharacter.cppにあります。明らかに、あなたがここで提供したヘッダーには存在します。 – WhozCraig