クラスの練習で出たエラーを解決できません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
エック

クラスの練習で出たエラーを解決できません

#1

投稿記事 by エック » 16年前

はじめまして。
最近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 スキップ ==========

---------------------------------------------------------------------------------------
以上です
初めての投稿なので見にくいかもしれませんが、よろしくお願いします

Justy

Re:クラスの練習で出たエラーを解決できません

#2

投稿記事 by Justy » 16年前

 とりあえず、object.hのクラス定義の最後の }に ;をつけてみてください。

ねこ

Re:クラスの練習で出たエラーを解決できません

#3

投稿記事 by ねこ » 16年前

パッと見た感じクラスの最後にセミコロンが無いような気がします(打ち損ねでなければ)

後まぁ、無くてもいいんだけど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; 
};

conio

Re:クラスの練習で出たエラーを解決できません

#4

投稿記事 by conio » 16年前

見たところ、セミコロンが無いですね。
クラスを囲んでいるカッコのあとにはセミコロンが必要です。
------------------------------------------------------
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:クラスの練習で出たエラーを解決できません

#5

投稿記事 by エック » 16年前

ただいま試してみたところ、うまくビルドすることができました。
本当にありがとうございました。
こんな単純な事に気がつかなかったことが、恥ずかしいです。
以降は、自分で気がつくように精進したいです。

閉鎖

“C言語何でも質問掲示板” へ戻る