はじめまして。
最近C++の勉強を始めた初心者ですが、クラス(コンストラクタ)の練習中にエラーが出て解決できません。
自分なりにコードを見直したり、解決の方法を模索したのですが自力ではどうにもできずご相談させていただく事としました。
Dxライブラリを使っており、おそらく設定のミスではないかと目星をつけたのですが、プロパティを見てもどこが悪いのか分かりませんでした。
------------------------------------------------------------------------------------------------------
--------------環境 Visual C++ 2008 Express Edition
--------------変更した設定
(Dxライブラリ置き場の導入と同じです)
ツール→オプション→インクルードファイル&ライブラリファイルの設定
パス:C:\Program Files\Microsoft Visual Studio 9.0\DxLib_VC
プロジェクトのプロパティの変更
全般→マルチ バイト文字セットを使用する
コード生成→マルチスレッド デバッグ(/MTd)
構成をReleaseに→マルチスレッド(/MT)
----------------ソースコード
-----------------------main.cpp-------------------------
#include<DxLib.h>
#include"object.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリ初期化
if( DxLib_Init() == -1 ) return -1 ;
CObject Test(50,50);
CObject Test2;
// キーの入力待ち
WaitKey() ;
DxLib_End();
return 0;
}
-------------------object.h-------------------------------------------
class CObject{
int ObjectX, ObjectY;
public:
CObject();
CObject(int, int);
void set_ObjectX(int X);
void set_ObjectY(int Y);
int get_ObjectX()const;
int get_ObjectY()const;
}
---------------------object.cpp----------------------------------
#include "object.h"
//コンストラクタ
CObject::CObject(){ObjectX=0; ObjectY=0;}
CObject::CObject(int X, int Y): ObjectX(X), ObjectY(Y){}
void CObject::set_ObjectX(int X){ObjectX=X;}
void CObject::set_ObjectY(int Y){ObjectY=Y;}
int CObject::get_ObjectX()const {return ObjectX;}
int CObject::get_ObjectY()const {return ObjectY;}
------------エラーメッセージ-------------------------------------------------------
------ ビルド開始: プロジェクト: sampleSTG, 構成: Debug Win32 ------
コンパイルしています...
main.cpp
d:\vc\samplestg\samplestg\main.cpp(4) : error C2628: 'CObject' の後に 'int' を続けて記述できません(セミコロン ';' で区切ってあるか確認してください)。
d:\vc\samplestg\samplestg\main.cpp(6) : error C2556: 'CObject WinMain(HINSTANCE,HINSTANCE,LPSTR,int)' : オーバーロード関数は、'int WinMain(HINSTANCE,HINSTANCE,LPSTR,int)' と戻り値の型のみが異なります。
c:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(2560) : 'WinMain' の宣言を確認してください。
d:\vc\samplestg\samplestg\main.cpp(6) : error C2371: 'WinMain' : 再定義されています。異なる基本型です。
c:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(2560) : 'WinMain' の宣言を確認してください。
object.cpp
d:\vc\samplestg\samplestg\object.cpp(5) : error C2533: 'CObject::{ctor}' : コンストラクタの宣言に戻り値の型が含まれています。
コードを生成中...
ビルドログは "file://d:\VC\sampleSTG\sampleSTG\Debug\BuildLog.htm" に保存されました。
sampleSTG - エラー 4、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
---------------------------------------------------------------------------------------
以上です
初めての投稿なので見にくいかもしれませんが、よろしくお願いします
クラスの練習で出たエラーを解決できません
Re:クラスの練習で出たエラーを解決できません
パッと見た感じクラスの最後にセミコロンが無いような気がします(打ち損ねでなければ)
後まぁ、無くてもいいんだけどprivate定義が無いのかな。
後まぁ、無くてもいいんだけどprivate定義が無いのかな。
class CObject{ private: int ObjectX, ObjectY; public: CObject(); CObject(int, int); void set_ObjectX(int X); void set_ObjectY(int Y); int get_ObjectX()const; int get_ObjectY()const; };
Re:クラスの練習で出たエラーを解決できません
見たところ、セミコロンが無いですね。
クラスを囲んでいるカッコのあとにはセミコロンが必要です。
------------------------------------------------------
class CObject{
int ObjectX, ObjectY;
public:
CObject();
CObject(int, int);
void set_ObjectX(int X);
void set_ObjectY(int Y);
int get_ObjectX()const;
int get_ObjectY()const;
}; ←
------------------------------------------------------
Re:クラスの練習で出たエラーを解決できません
ただいま試してみたところ、うまくビルドすることができました。
本当にありがとうございました。
こんな単純な事に気がつかなかったことが、恥ずかしいです。
以降は、自分で気がつくように精進したいです。
本当にありがとうございました。
こんな単純な事に気がつかなかったことが、恥ずかしいです。
以降は、自分で気がつくように精進したいです。