
今年の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も見ています
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
エディットボックスのフォントを変えたい
C言語・C++・C#
-
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
-
4
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
5
適切な変換関数が存在しない???
C言語・C++・C#
-
6
どんなプログラムを書いても指定されたファイルが見つかりません。と出てきます。どうやったら解決しますか
C言語・C++・C#
-
7
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
-
8
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
9
ボタンが押された事を検知するには?
C言語・C++・C#
-
10
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
11
メッセージハンドラ
C言語・C++・C#
-
12
多重定義が起きている?--lnk2005エラー:VC++
C言語・C++・C#
-
13
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
14
ビジュアルC++でボタンの有効/無効
C言語・C++・C#
-
15
Debug Assertion Failed?
C言語・C++・C#
-
16
#include <Windows.h>というヘッダファイルについて
C言語・C++・C#
-
17
CString から LPCTSTRの型に変換
C言語・C++・C#
-
18
【C++】関数ポインタの使い方
C言語・C++・C#
-
19
変数の値が勝手に変化する原因
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
volatile修飾について
-
C++でアボート(Abort)で処理が...
-
変数(関数)名の頭に_
-
g++ というコマンドのコンパイラ
-
ABAQUS ユーザーサブルーチン...
-
linuxのセキュリティ対策と致し...
-
コンパイルできない
-
65536は2の何乗なのでしょうか?
-
正しい五十音順について
-
あるプログラムのコマンドライ...
-
PICマイコンのコピー(クローン...
-
Excelで4096点以上のFFTの方法
-
VBAの再計算が反映されない件に...
-
Vba UserFormを前面に出す方法...
-
動画ファイルの関連付け
-
CRCについて教えてください
-
ドロップダウンリストの文字を...
-
OS入ってる機器のソフト・アプ...
-
読み込み中にアクセス違反が発...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
C++ で、「)」が必要 というエ...
-
C++でアボート(Abort)で処理が...
-
io.hをincludeするとそのような...
-
コンパイラについて
-
コンパイルできない
-
Delphiの逆コンパイル
-
Eclipseの環境設定について
-
変数(関数)名の頭に_
-
関数の戻り値による変数の初期化
-
Visual C++とVisual C++.NETの違い
-
初心者はIDE使わないほうが良く...
-
fortranでのNaNについて
-
コンパイラフラグ(compiler fla...
-
sprintfを用いたフォーマット文...
-
C言語のワーニングメッセージの...
-
非商用のインテルコンパイラ
-
不要なインクルードファイルの検出
-
ccコマンドの使い方
-
ABAQUS ユーザーサブルーチン...
おすすめ情報