
VC++2010 Expressを使ってC++を書いているのですが、
今までは、使用するクラスファイルを全てエントリーポインのある
int _tmain(int argc, _TCHAR* argv[])の上に記述して使っていたのですが、クラスの数が増えてきたので、エントリーファイルと同階層のソースファイルフォルダの下に置くようにしました。この場合、たとえば下記のメイン部分のように、
基底クラスの読み込み順を考量して、#includeしているのですが、エントリポイントのファイルを「右クリック」->「コンパイル」はエラー無しではけるようになったのですが、
F5キーでデバッグを開始してビルドする多くのエラーをはいてしまいます。
とりあえず、全てのクラスファイルをインクルードした形のエントリポインタのファイルのコンパイルはうまくいっているので、その結果を使ってビルドする方法が分かりかねています。
Expressの使い方の問題だと思うので、御経験のある方、御教示願えたらと思います。
<メイン部分>
#include "stdafx.h"
#include <iostream>
using namespace std;
#include "point.cpp"
#include "canvas.cpp"
#include "shape.cpp"
#include "rect.cpp"
#include "triangle.cpp"
#include "square.cpp"
int _tmain(int argc, _TCHAR* argv[])
{
Canvas c;
Shape *shape[3];
Rect r(5, 5, 20, 10);
shape[0] = &r;
Triangle t(1, 18, 16, 8);
shape[1] = &t;
Square s(22, 2, 6);
shape[2] = &s;
for (int i=0; i<3; i++) shape[i]->draw(&c);
c.show();
getchar();
return 0;
}
No.2ベストアンサー
- 回答日時:
結局エラーの内容は秘密ですか?
私の推測通りのエラーであれば、プロジェクトからインクルードしているファイル(point.cpp、canvas.cppなど)を削除してください。
.cppファイルがプロジェクトに存在すると、VCはコンパイル・リンクしようとします。list12.cpp内でインクルードした内容と同内容が別ファイルのコンパイルで出来上がるため、重複が起こります。
この回答への補足
情報ありがとうございます。
一応、以下の2通りの仕方でできました。
(1)list12.cppのインクルードの内容を、#include "point.h"のようにインクルードファイルに
換えて、クラスの記述をヘッダーファイルに上記の名前のファイルとして記述する。最後に、ソル―ションビルドを実行する。
(2)今まで通り、#include "point.cpp"の記述でcppファイルをソースファイル下に置く。この状態でlist12.cppを右クリック->「コンパイル」を実行。その後、list12.cpp以外のファイルを右クリック->「プロジェクトから除外」を実行。最後に、ソル―ションビルドを実行する。(除外したファイルはソースファイルの記述からは消えますが、フォルダの中にはまだ残っていて、「ソル―ションエクスプローラ」の「すべてのファイルを表示」をクリックすると表示されるようです。
皆さん、どのように使っているかよく分からないので、上記(1)、(2)以外にも良い使い方があれば教えてください。
No.1
- 回答日時:
どんなエラーが出てるのかわからないので、推測になりますが。
(あなたが作ったプログラムを他人が使ったとして、「エラーが出てる」だけでは原因はわからないですよね。)
.cppファイルをインクルードしているのですが、クラスの実装部分が.cppファイルに記述されているのですよね。
そうであれば、例えばpoint.cppの内容はpoint.cppのコンパイル時とメイン部分のコンパイル時の2回出てくるため、リンク時に重複しているとなるんじゃないでしょうか。
この回答への補足
ソースファイルが置いてあるディレクトリから、コマンドプロンプトで、(list12.cppはエントリポイントのファイル名です。)
>cl /EHsc list12.cpp /link /DEBUG /OUT:"..\Debug\list12.exe"
を実行すると所望の実行ファイルがビルドできます。
これと同じ操作を、Expressのメニューを使ってう方法がよく分からないのです。
メニューの「ツール」->「設定」->「上級者用の設定」にして使っているのですが、
メニューの「ビルド」で「list12のビルド」または「ソリューションのビルド」を選んでビルドしても
同じようにエラーをはいてしまいます。おっしゃられているようにインクルードしている個別のファイルをコンパイルしている時にエラーをはいています。上記コマンドプロンプトの記述通りに、個別のファイルをコンパイルしないようにする設定方法が分かりかねています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
「fatal error C1189」を回避す...
-
関数外からstatic変数を再度初...
-
C言語でヘッダファイルにグロー...
-
C++コンパイル時ファイル名文字...
-
1 つ以上の複数回定義されてい...
-
セミコロンについて
-
makefileでコピーしてからコン...
-
漢字のコメントをはずすとコン...
-
外部シンボル "_main"は未解決です
-
エクセルVBAではRound...
-
「DeclareステートメントにPtrS...
-
ビルドとリビルドの違いを教え...
-
マクロ コンパイルがグレーバック
-
ILSpyで、デコンパイルできない。
-
ヘッダファイルに関数本体を書...
-
,NET Framework のバージョンを...
-
ExcelVBAで『ByRef 引数の型が...
-
Borland C++ 5.5
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
Makefile作成時の拡張子.oとは?
-
「fatal error C1189」を回避す...
-
C++コンパイル時に『 C1083: in...
-
ビルドとリビルドの違いを教え...
-
ILSpyで、デコンパイルできない。
-
外部シンボル "_main"は未解決です
-
PRO*C コンパイルエラー
-
コンパイルエラー:ユーザ定義...
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
<math.h>があるのにsqrtが・...
-
漢字のコメントをはずすとコン...
-
クリティカルエラー Expressio...
-
コンパイル??
-
セミコロンについて
おすすめ情報