スタックオーバーフローに投稿するのはこれが初めてなので、うまくいけば、これはすべてのエチケットを守っています!
有限状態マシンを使用する個人プロジェクトで使用するために、SDL1.x拡張ライブラリを使用してC++でボタンクラスを作成および実装しようとしています。仮想関数「Button」、Buttonから派生したクラス、「MenuButton」、およびMenuButtonを作成しようとする「Title」状態を持つ基本クラスがあります。
私はMicrosoftVisualStudio 2012を使用していますが、Intellisenseは私のコードが正しいと言っています。ただし、コンパイルしようとすると、次の2つのエラーが発生します。
title.h(35):エラーC2143:構文エラー:';'がありません 前 '*'
title.h(35):エラーC4430:型指定子がありません-intと見なされます。注:C++はdefault-intをサポートしていません
私は自分で問題を理解しようと数時間を費やしました。私はグーグルを検索し、stackoverflowも検索しましたが、同様の問題を抱えている他の多くの投稿を見たり読んだりしましたが、どれも私と同じ問題を抱えているようには見えませんでした。
他の人によって投稿された他の同様の問題と彼らの受け入れられた答えに基づいて、私はすでに検索しました:#includeループの問題、クラス宣言に最後の;があることを確認し、すべての#includeが含まれていることを確認します(私が知っている) 。
コードスニペットは以下のとおりです。誰かがこれを解決する方法を教えてくれれば、私は知恵と支援に感謝します。
ありがとうございました
Button.h(基本クラス)
#ifndef BUTTON_H
#define BUTTON_H
#include "SDL.h"
#include "SDL_image.h"
#include "SDL_ttf.h"
#include "Functions.h"
#include "Globals.h"
#include "Constants.h"
#include <string>
using namespace std;
class Button
{
public:
virtual void handleEvents() = 0;
virtual void render() = 0;
//virtual ~Button(void){};
protected:
//Our enumerated type
const enum mouseStates {CLIP_MOUSEOUT, CLIP_MOUSEOVER, CLIP_MOUSEDOWN, CLIP_MOUSEUP};
//Our rect to hold the offsets and size of the button
SDL_Rect button;
//Array of rects to hold the dimensions of each clip from the sprit sheet
SDL_Rect clips[4];
//Holds the location and size of the clip to show from sprite sheet
SDL_Rect *clip;
//The sprite sheet surface from which we clip the button images
SDL_Surface *buttonSpriteSheet;
//The surface for our button text
SDL_Surface *buttonSurfaceText;
//The text for our button
string buttonText;
//The state the button will lead to when clicked
GameStates targetState;
//Whether we are moused over the button
bool mouseOver;
};
#endif
MenuButton.h(派生クラス)
#ifndef MENUBUTTON_H
#define MENUBUTTON_H
#include "button.h"
using namespace std;
class MenuButton :
public Button
{
public:
MenuButton(void);
MenuButton(int x, int y, int w, int h, string text, GameStates state);
void handleEvents();
void render();
~MenuButton(void);
};
#endif
Title.h(ボタンを作成してエラーをスローしている状態)
#ifndef TITLE_H
#define TITLE_H
#include "GameState.h"
#include "SDL.h"
#include "SDL_image.h"
//#include "SDL_Mixer.h"
#include "Functions.h"
#include "Globals.h"
#include "Constants.h"
#include "MenuButton.h"
#include <iostream>
#include <string>
using namespace std;
class Title :
public GameState
{
public:
Title(void);
//Handles intro events
void handleEvents();
//Handles intro logic
void logic();
//Handles intro rendering
void render();
~Title(void);
private:
SDL_Surface *background;
MenuButton *testButton; //NOTE: This is the line throwing the errors
//Mix_Music *music;
};
#endif
助けてくれてありがとう!〜<3