C++ 継承 エラー「メンバ関数が '~' で宣言されていません。」
Posted: 2012年12月19日(水) 22:52
はじめまして 夜分遅くに質問失礼します。
C#でのゲーム制作は少しやったことがあるのですが、今回初めてC++でゲームを作ってみようとしました。
しかし、いきなりクラスの継承でつまずいてしまいました。
いろんなオブジェクトの親にしたいヘッダーファイル「Object.h」
上のヘッダーファイルをインクルードした親「Object.cpp」
Objectを親にして作りたい子クラス「Jiki.h」
Jiki.hをインクルードする「Jiki.cpp」
こうすると「error C2509: 'ModelLoad' : メンバ関数が 'Jiki' で宣言されていません。」というエラーがでてしまいます。
Jiki.hに「void ModelLoad();」を追加すると大丈夫なのですが、そのような方法でいいのでしょうか?
自分の書き方が悪くて継承できてないだけでしょうか?
回答よろしくお願いいたします。
環境 Windows7 Visual Studio 2008
使用ライブラリ DXライブラリ
C#でのゲーム制作は少しやったことがあるのですが、今回初めてC++でゲームを作ってみようとしました。
しかし、いきなりクラスの継承でつまずいてしまいました。
いろんなオブジェクトの親にしたいヘッダーファイル「Object.h」
#ifndef OBJECT_H
#define OBJECT_H
#include "DxLib.h"
class Object
{
private:
//変数
int ModelHandle;//モデルハンドルの保存
VECTOR Vect;//モデルの座標
public:
//関数
Object();//コンストラクタ
virtual void ModelLoad();//モデルのロード
virtual void Action();//モデルの操作、動作
virtual void Render();//レンダリング
void Initialize();//初期化
void Update();//アップデート
~Object();//デストラクタ
};
#endif
上のヘッダーファイルをインクルードした親「Object.cpp」
#include "Object.h"
//コンストラクタ
Object::Object()
{
//ModelLoad();
}
void Object::ModelLoad(){}//モデルのロード
void Object::Action(){}//モデルの操作、動作
void Object::Render(){}//レンダリング
//初期化
void Object::Initialize(){}
//アップデート
void Object::Update()
{
Action();
Render();
}
Object::~Object(){}//デストラクタ
Objectを親にして作りたい子クラス「Jiki.h」
#ifndef JIKI_H
#define JIKI_H
#include "Object.h"
class Jiki : public Object
{
private:
int ModelHandle;//モデルハンドルの保存
VECTOR Vect;//モデルの座標
public:
Jiki();//コンストラクタ
~Jiki();//デストラクタ
};
#endif
Jiki.hをインクルードする「Jiki.cpp」
こうすると「error C2509: 'ModelLoad' : メンバ関数が 'Jiki' で宣言されていません。」というエラーがでてしまいます。
Jiki.hに「void ModelLoad();」を追加すると大丈夫なのですが、そのような方法でいいのでしょうか?
自分の書き方が悪くて継承できてないだけでしょうか?
回答よろしくお願いいたします。
環境 Windows7 Visual Studio 2008
使用ライブラリ DXライブラリ