![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
今年の9月にC++を学校ではじめた初心者です。
書いているプログラムで、コンパイルしようとしたときに、)が必要
と出てくるのですが、対応している()はあるので、どうすればいいか困っています。
使っているコンパイラはBorland C++ です。
よろしくおねがいします。
class DraculaCastle
{
VanHelsing vh;
CountDraculia cd;
ここ→ CountDraculia cdstrong(400, rand()%10, 30, 0);
public:
DraculaCastle();
void Play();
};
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
#4の回答補足について
>「:cdstrong(400, rand()%10, 30, 0) // <= ココに追加」
>の部分なんですが、この書き方で二つかけますか?
初期化子は、2つ以上、かけます
複数のメンバー変数を書く場合は、「,」(カンマ)で区切ってください
書き方は以下のようになります
class DraculaCastle
{
VanHelsing vh;
CountDraculia cd;
CountDraculia cdstrong;
public:
DraculaCastle();
void Play();
};
DraculaCastle::DraculaCastle()
:cd(100+rand()%10*10, rand()%10, rand()%5*5, 0, 20+rand()%2*10),
cdstrong(300, rand()%10, 30, 0, 30+rand()%3*10)
{
~以下略~
#5の回答補足について
> 上のコードを使ったらできました。ですが、なぜはじめの )が必要 というエラーがでたのでしょうか?
コンパイラがどのように構文解析をしていったかによりますので、なんともいえません
少なくとも、構文とあっていなかったと、いうことです。
たとえば、同じようなコードをVC++6でコンパイルすると、違うメッセージが表示されています。
あまり深く追求しなくてもよいかと思います
コンパイラの構成を勉強したいのであれば、別ですが...
No.5
- 回答日時:
#4に追記ですが、クラス宣言が抜けていたので一応追加です
class DraculaCastle
{
VanHelsing vh;
CountDraculia cd;
CountDraculia cdstrong;
public:
DraculaCastle();
void Play();
};
DraculaCastle::DraculaCastle()
:cdstrong(400, rand()%10, 30, 0) // <= ココに追加
{
cout << "<you enter the dark castle of Count Draculia>" << endl;
cout << "<everything around you is dusty>" << endl;
cout << "<then, you sense a presence over you... looking down upon you>" << endl;
~中略~
cout << "<your remaining MP>:" << vh.GetMP() << endl;
cout << "<Count Draculia's remaining HP>:" << cd.GetHP() << endl;
}
この回答への補足
解決策、ありがとうございました。
上のコードを使ったらできました。ですが、なぜはじめの )が必要 というエラーがでたのでしょうか?
No.4
- 回答日時:
このようにしては、どうですか?
DraculaCastle::DraculaCastle()
:cdstrong(400, rand()%10, 30, 0) // <= ココに追加
{
cout << "<you enter the dark castle of Count Draculia>" << endl;
cout << "<everything around you is dusty>" << endl;
cout << "<then, you sense a presence over you... looking down upon you>" << endl;
~中略~
cout << "<your remaining MP>:" << vh.GetMP() << endl;
cout << "<Count Draculia's remaining HP>:" << cd.GetHP() << endl;
}
この回答への補足
「:cdstrong(400, rand()%10, 30, 0) // <= ココに追加」
の部分なんですが、この書き方で二つかけますか?
class DraculaCastle
{
VanHelsing vh;
CountDraculia cd;
CountDraculia cdstrong;
public:
DraculaCastle();
void Play();
};
DraculaCastle::DraculaCastle()
:cd(100+rand()%10*10, rand()%10, rand()%5*5, 0, 20+rand()%2*10)
:cdstrong(300, rand()%10, 30, 0, 30+rand()%3*10)
{
cout << "<you enter the dark castle of Count Draculia>" << endl;
cout << "<everything around you is dusty>" << endl;
cout << "<then, you sense a presence over you... looking down upon you>" << endl;
中略
cout << "<your remaining HP>:" << vh.GetHP() << endl;
cout << "<your remaining MP>:" << vh.GetMP() << endl;
cout << "<Enemy's remaining HP>:" << cd.GetHP() << endl;
}
このようにcd(strong, weak 等)を何種類か書き、VanHelsingと戦えさせたいのですが。。エラーになります。
No.3
- 回答日時:
基本的に #2 でいいと思うんだけど....
「ちょっと違いました」とは, 何がどのように「ちょっと違った」のでしょうか?
この回答への補足
#2は
public:
DraculaCastle();
void Play();
のDraculaCastle();
を定義しているんですよね?でもDraculaCastleは
DraculaCastle::DraculaCastle(){
cout << "<you enter the dark castle of Count Draculia>" << endl;
cout << "<everything around you is dusty>" << endl;
cout << "<then, you sense a presence over you... looking down upon you>" << endl;
cout << "<you look up>" << endl;
cout << "<suddently, a dark shape falls off one of the main pillars supporting the battlements>" << endl;
cout << "<it falls right behind you, but very silently>" << endl;
cout << "<you notice it has a shape of a man, but has wings>" << endl;
cout << "I AM COUNT DRACULIA, AND YOU SHALL BOW DOWN BEFORE ME!!" << endl;
cout << "<the shape booms in a deafening voice>" << endl;
cout << "<finally... you realize that the legends were true...>" << endl;
cout << "I have come to destroy you, Count Draculia." << endl;
cout << "So it shall be..." << endl;
cout << "Ready..." << endl;
cout << "Fight!! " << endl;
cout << "<Weapons>" << endl;
cout << "<1. Silver Bullet: a strong but narrow attack. only damages attack location.>" << endl;
cout << "<2. Holy Flame Thrower: a not so strong but has a wide damage zone.>" << endl;
cout << "<3. SIGHT: tells you where the enemy is.>" << endl;
cout << "<4. POISON: poisons the enemy. enemy receives damage every turn.>" << endl;
cout << "<your remaining HP>:" << vh.GetHP() << endl;
cout << "<your remaining MP>:" << vh.GetMP() << endl;
cout << "<Count Draculia's remaining HP>:" << cd.GetHP() << endl;
}
のように、すでに定義してあるのです。それで、定義したいのはCountDraculiaで、DraculaCastleではないのです。
No.2
- 回答日時:
> ここ→ CountDraculia cdstrong(400, rand()%10, 30, 0);
指摘の部分は、初期化を行いたいということでしょうか?
初期化であれば、コンストラクタに初期化子を使って初期化する方法があります。
例えば、下記のように記述すればよいかと思います
class DraculaCastle
{
VanHelsing vh;
CountDraculia cd;
CountDraculia cdstrong;
public:
DraculaCastle();
void Play();
};
DraculaCastle::DraculaCastle()
: cdstrong(400, rand()%10, 30, 0)
{
}
この回答への補足
class CountDraculia
{
int HP, pos, defense, poisoned;
public:
CountDraculia(int HP1, int pos1, int defense1, int poisoned1):HP(HP1), pos(pos1), defense(defense1), poisoned(poisoned1){}
void Attacked(Assault n);
int GetHP() const{ return HP;}
};
void CountDraculia::Attacked(Assault n){
~内容~
}
というのをさっきのやつの前に書いたのですが、上のをベースとして、敵を何種類か作れるようにしたいんです。
CountDraculiaオブジェクトをDraculaCastle(戦いの場と考える)クラス内でつくり、HP, pos, defense, poisoned などを初期化しようとしました。
Schwarz20さんの回答のを試しましたが、DraculaCastle(); はその後に定義されているので、ちょっと違いました。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# アプリ開発について 初心者です phythonをはじめに学んで、c#かswiftのどちらかを学ぶのは 2 2023/07/09 19:18
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- C言語・C++・C# ExcelCS 1 2023/01/27 19:47
- Windows 10 Visual StudioとVisual C++ Build Toolsについて 1 2023/04/16 03:42
- Java eclipse実行ができない 2 2022/07/27 04:47
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エラーの原因は?「この関数の定義が見つかりません」
C言語・C++・C#
-
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
適切な変換関数が存在しない???
C言語・C++・C#
-
-
4
テキストボックスからフォーカス外す
C言語・C++・C#
-
5
C言語での引数の省略方法
C言語・C++・C#
-
6
EOF
C言語・C++・C#
-
7
return trueとreturn falseの用途・違いは・・・?
JavaScript
-
8
C言語で構造体のメンバを簡単に出力する方法ありますか?
C言語・C++・C#
-
9
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
10
Winmerge ファイルの中身は同じなのに黄色くなる
その他(OS)
-
11
Visual Studioのstrcpy_sについて
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
変数(関数)名の頭に_
-
コンパイルできない
-
PICマイコンによる乱数の表示に...
-
C言語のワーニングメッセージの...
-
ABAQUS ユーザーサブルーチン...
-
【エラー】Cpadで初めてコンパイル
-
C++ で、「)」が必要 というエ...
-
Visual C++とVisual C++.NETの違い
-
シンボル、リンカーの(ソフト...
-
fortranでのNaNについて
-
C言語で長方形を作る
-
コンパイルの意味
-
Eclipseの環境設定について
-
パックマンプログラム
-
【JAVA】数字をひし形に出力す...
-
自動クエリとはどういうもので...
-
変数の値が勝手に変化する原因
-
あるプログラムのコマンドライ...
-
C言語のプログラミングの問題で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
C++でアボート(Abort)で処理が...
-
変数(関数)名の頭に_
-
C++ で、「)」が必要 というエ...
-
io.hをincludeするとそのような...
-
C言語のワーニングメッセージの...
-
Eclipseの環境設定について
-
ABAQUS ユーザーサブルーチン...
-
Visual C++とVisual C++.NETの違い
-
コンパイルできない
-
volatile修飾について
-
コンパイラについて
-
コンパイラフラグ(compiler fla...
-
Delphiの逆コンパイル
-
fortranでのNaNについて
-
cobolの文法チェックソフト
-
不要なインクルードファイルの検出
-
__extension__
-
IPアドレス表示プログラム
-
isnanの取り扱いについて
おすすめ情報