コードでこれが 2 回発生しましたが、ヘッダー ファイル "Scene.h" があると不平を言っている理由がわかりません。
#pragma once
#include <iostream>
#include <string>
#include "Image.h"
#include "InteractiveObject.h"
using namespace std;
class Scene
{
public:
int id;
string title;
Image* backgroundImage;
InteractiveObject interactiveObjects[ 1 ];
D3DXVECTOR3 pos;
Scene( int id_, string title_, Image* backgroundImage_ )
:
id( id_ ),
title( title_ ),
backgroundImage( backgroundImage_ )
{
this->pos.x = 0.0f;
this->pos.y = 0.0f;
this->pos.z = 0.0f;
}
};
「InteractiveObject.h」という別のファイルがあります。
#pragma once
#include <iostream>
#include <string>
#include "Image.h"
enum { CHARACTER, OBJECT };
class InteractiveObject
{
public:
int id;
int type;
float x;
float y;
float z;
D3DXVECTOR3 pos;
string title;
Image* theImage;
InteractiveObject( int id_, string title_, Image* theImage_, int type, float x, float y, float z )
:
id( id_ ),
title( title_ ),
theImage( theImage_ )
{
this->pos.x = x;
this->pos.y = y;
this->pos.z = z;
}
};
私のインテリセンスは、次のものがあると不平を言っています:
エラー 1 エラー C2512: 'InteractiveObject': 適切な既定のコンストラクターがありません c:\users\james\documents\visual studio 2012\projects\game\game\scene.h 26 1 ゲーム
両方にデフォルトのコンストラクターがあることを考慮したアイデアはありますか?
編集:: - - - - -
ここにいる皆さんに感謝します。
InteractiveObject( int id_, string title_, Image* theImage_, int type_, float x_, float y_, float z_ )
:
id( id_ ),
title( title_ ),
theImage( theImage_ ),
type( type_ ),
x( x_ ),
y( y_ ),
z( z_ )
{
問題は消えます..これが最善の方法であるかどうかはわかりません.しばらくすると泣きながら戻ってきます. 最も簡潔な回答だと思う回答に投票していただけますか?
私の現在の要件は、ゲーム コンストラクターで宣言され、画面に描画するために反復処理される一定量のインタラクティブ オブジェクトをシーンに含めることです。
"game.cpp":
Game::Game( HWND hWnd, Mouse &mouse )
:
gfx( hWnd ),
mouse( mouse )
{
gfx.d3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE);
//--------------Scene 0---------------
scenes[ 0 ] = Scene( 0, "La barra de funk", new Image( gfx, "Images/Scene/Area/Bar/Background.jpg", 1024, 768, FALSE ) );
scenes[ 0 ].interactiveObjects[ 0 ] = new InteractiveObject( 0, "la rockola de muse", new Image( gfx, "Images/Scene/Area/Bar/InteractiveObjects/Jukebox.png", 428, 586, TRUE ), OBJECT, 300.0f, 200.0f, 1.0f );
};
Game::~Game()
{
// Delete scenes array
/*for( int a = 0; a < sizeof( scenes ) / sizeof( Scene ); a++ )
{
scenes[ a ] = NULL;
delete scenes[ a ];
}*/
};
void Game::Go()
{
gfx.Begin();
ComposeFrame();
gfx.End();
gfx.Present();
};
void Game::ComposeFrame()
{
for each ( Scene currentScene in scenes )
{
currentScene.backgroundImage->sprite->Begin( D3DXSPRITE_ALPHABLEND );
currentScene.backgroundImage->sprite->Draw( currentScene.backgroundImage->gTexture, NULL, NULL, ¤tScene.pos, 0xFFFFFFFF );
currentScene.backgroundImage->sprite->End();
for each ( InteractiveObject currentInteractiveObject in currentScene.interactiveObjects )
{
currentInteractiveObject.theImage->sprite->Begin( D3DXSPRITE_ALPHABLEND );
currentInteractiveObject.theImage->sprite->Draw( currentScene.backgroundImage->gTexture, NULL, NULL, ¤tInteractiveObject.pos, 0xFFFFFFFF );
currentInteractiveObject.theImage->sprite->End();
}
}
}