delete関数で"未解決の外部シンボル"のエラー
Posted: 2016年2月26日(金) 14:26
件名のとおり、下記のプログラムで未解決の外部シンボルのエラーが出てしまいます。
phadeout.cpp
phadeout.h
エラー:
エラー 1 error LNK2019: 未解決の外部シンボル "public: __thiscall Cphade::~Cphade(void)" (??1Cphade@@QAE@XZ) が関数 "public: void * __thiscall Cphade::`scalar deleting destructor'(unsigned int)" (??_GCphade@@QAEPAXI@Z) で参照されました。 C:\Users\森康一\Documents\Visual Studio 2013\Projects\0225proj\0225proj\phadeout.obj 0225proj
コメントアウトでの原因調査の結果 2箇所のdelete phade;がエラーの原因となっていることが判明したのですが、エラーが発生せず動くにはどうすればよいのかわかりません。よろしくお願いします。
phadeout.cpp
#include"phadeout.h"
#include"Dxlib.h"
#include"GV.h"
int alpha = 0;
int phadestate = 0;
Cphade *phade = new Cphade(DEF_PHADE);
void phadeout(){
if (phadestate == 0){
phadestate = 1;
}
if (phadestate == -1){
}
}
Cphade::Cphade(){
PHADEMODE = NORMAL;
alpha = 0;
mode = 0;
endflag = false;
}
Cphade::Cphade(E_PHADEMODE f){
alpha = 0;
mode = 0;
endflag = false;
PHADEMODE = f;
}
void Cphade::Process(){
switch (PHADEMODE){
case NORMAL:
if (mode == 0){
alpha += 16;
}
if (mode == 1){
alpha -= 16;
}
if (alpha > 255){
alpha = 255;
mode = 1;
}
if (alpha < 0){
alpha = 0;
endflag = true;
}
break;
}
//endflagがtrueになったら自己クラスを破棄する
if (endflag == true){
delete phade;
phade = new Cphade(DEF_PHADE);
}
}
void Cphade::Draw(){
switch (PHADEMODE){
case NORMAL:
SetDrawBlendMode(DX_BLENDMODE_ALPHA,alpha);
DrawBox(0, 0, WINDOW_X, WINDOW_Y, GetColor(0, 0, 0), 1);
break;
}
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,0);
}
E_PHADEMODE Cphade::getmode(){
return PHADEMODE;
}
int phadeMgr_flag;
void phadeMgr(){
if (phadeMgr_flag == 0){
phadeMgr_flag = 1;
}
}
//これを外部参照する
void phadeout(E_PHADEMODE f){
if (phade->getmode() != f){
delete phade;
phade = new Cphade(f);
}
}
#ifndef DEF_PHADEOUT_H
#define DEF_PHADEOUT_H
extern int phadestate;
void phadeMgr();
void phadeout();
enum E_PHADEMODE{
DEF_PHADE,
NORMAL
};
class Cphade{
protected:
E_PHADEMODE PHADEMODE;//何番のフェードアウトか
int mode;//同一種のフェードの実行中どの状態か
int alpha;//アルファブレンド値(一部のフェードで利用)
bool endflag;//終わったらtrueになりフェードクラスが破棄される
public:
E_PHADEMODE getmode();
Cphade();
Cphade(E_PHADEMODE);
~Cphade();
void Process();
void Draw();
};
extern Cphade *phade;
#endif
エラー 1 error LNK2019: 未解決の外部シンボル "public: __thiscall Cphade::~Cphade(void)" (??1Cphade@@QAE@XZ) が関数 "public: void * __thiscall Cphade::`scalar deleting destructor'(unsigned int)" (??_GCphade@@QAEPAXI@Z) で参照されました。 C:\Users\森康一\Documents\Visual Studio 2013\Projects\0225proj\0225proj\phadeout.obj 0225proj
コメントアウトでの原因調査の結果 2箇所のdelete phade;がエラーの原因となっていることが判明したのですが、エラーが発生せず動くにはどうすればよいのかわかりません。よろしくお願いします。