以下のようなプログラムで//ここで示した場所でエラーになります。
継承でなくてインプリメントした場合はインプリメントされたクラスにコンストラクタの引数は渡せないのでしょうか?
最近CからC++へステップアップをし始めた初心者なので基本的なことかもしれないのですが誰かお助けください。
よろしくお願いします。
class BMP{
public:
int nSpHandle[10];
BMP(
char *arpcStr,
int arnAll,
int arnXNum,
int arnYNum,
int arnXSiz,
int arnYSiz
){
LoadDivGraph(arpcStr,arnAll,arnXNum,arnYNum,arnXSiz,arnYSiz,nSpHandle);
}
};
class FIGHTER:public MOVOBJ{
int nAni;
BMP bmp("fighter.OBJ",5,5,1,24,24);//ここ
FIGHTER(){
nAni=0;
}
};
訂正
BMP bmp("fighter.bmp",5,5,1,24,24);//ここ
OBJでなくてbmpです。
置換したときに間違って置換されていたみたい。
ごめんなさい。
エラーはどちらにせよ同じものが出ます。
たぶんインプリメントと言う言葉の使い方を間違えているかもしれません。
どんなエラー・メッセージですか?
わっレスがはやいですね。
うれしいです。
c:\Documents and Settings\***\My Documents\Visual Studio Projects\d1\main.cpp(85): error C2059: 構文エラー : '文字列'
このようなエラーが出ています。
C2059のエラーは ソース中に認識できない文字があるというものです。
main.cppの85行目に全角文字とかないでしょうか?
ついでに VC++のバージョンも明記したほうがいいですね。
ありがとうございます。
内容が足らなくてすみません。
バージョンは
Microsoft Visual C++ .NET 69504-335-0000007-18190
Microsoft Deveropment Environment 2003 Version 7.1.3091
Microsoft .NET Framework 1.1 バージョン 1.1.4322 SP1
となっています。
確認しましたが、全角文字ははないようです。
包含という言葉はインプリメントと同じ事でしょうか?
どうやら自分がやりたいのは包含のようです。
http://www.geocities.jp/ky_webid/cpp/language/013.html
http://www5c.biglobe.ne.jp/~ecb/cpp/05_01.html
自分では今ここら辺の記事を読んで勉強中です。
あ〜わかりました。
class AAA
{
int m_num;
public:
AAA( int n ) { m_num = n; }
};
class BBB
{
int m_num2;
AAA m_aaa( 10 );
public:
BBB( int m ) { m_num2 = m; }
};
みたいに、BBBのメンバ変数としてAAAを使いたいんだけど、
コンストラクタを書いてしまうとエラーになってしまうということでしょうか?
そういう場合は、メンバ変数を書くときは宣言だけにして、
BBBのコンストラクタの呼び出しの時に初期化するようにシマス。
(メンバイニシャライザ)
class BBB
{
int m_num2;
AAA m_aaa;
public:
BBB( int m ) : m_aaa( 10 ) { m_num2 = m; }
};
どうやらできたっぽいです。
http://www5c.biglobe.ne.jp/~ecb/cpp/05_03.html
のメンバーイニシャライザというのでできました。
昨日から詰まっていて困っていたので、つい書き込んでしまいましたが、思ったよりはやく自分で解決してしまいました。
すみません、お騒がせしました。
ちなみにこうなりました。
class BMP{
public:
int nSpHandle[10];
BMP(
char *arpcStr,
int arnAll,
int arnXNum,
int arnYNum,
int arnXSiz,
int arnYSiz
);
BMP(const BMP&);
};
BMP::BMP(
char *arpcStr,
int arnAll,
int arnXNum,
int arnYNum,
int arnXSiz,
int arnYSiz
){
LoadDivGraph(arpcStr,arnAll,arnXNum,arnYNum,arnXSiz,arnYSiz,nSpHandle);
}
class FIGHTER:public MOVOBJ{
public:
int nAni;
BMP bmp;
FIGHTER():bmp("fighter.bmp",5,5,1,24,24){
nAni=0;
}
FIGHTER(const FIGHTER&);
};
またなにかで詰まったらお助けください。
ありがとうございました。
追記
> http://www5c.biglobe.ne.jp/~ecb/cpp/05_01.html
のサイトの3つ先に「メンバイニシャライザ」の説明がありました。
ちょうど自分が書いてる時に書き込んでくれていたのですね。
自分が見つけたのもBlueさんの答えと同じ解決方法でした。
ほんとすみません。 勉強になります。
昨日は友達にも聞いたけどわからなかったのです。
Blueさんありがとう。
それでは解決にしておきます。
って、めっちゃかぶったw
ツイート | ![]() |