- 締切済み
フレンド関数を利用したオーバーロードでコンパイルエラー
独習C++(第3版)で学習していますが、書籍通りに入力してもコンパイルエラーが出てしまい、困っております。 P.199 6.5.フレンド演算子関数の使用にあるソースコードをそのままコピーしただけです。 フレンド関数を利用し、演算子オーバーロードをすると、コンパイルエラーが発生してしまうようです。 (10): friend coord operator+(coord ob1,int i); C:\jsp\tools\samp13\XXXX.cpp(10) : fatal error C1001: 内部コンパイラ エラー (コンパイラ ファイル 'msc1.cpp', 行番号 1786) Visual C++ のサポート情報 コマンドを選択してください ヘルプ メニュー、 またはサポート情報のヘルプ ファイルを参照してください 少し検索したところVC++6.0だとバグで起こってしまうとのことですが、この状態からコンパイルエラーを無くすには何をしたらよいのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- machongola
- ベストアンサー率60% (434/720)
こんにちは。 >>少し検索したところVC++6.0だとバグで起こってしまうとのことですが、この状態からコンパイルエラーを無くすには何をしたらよいのでしょうか? クラスの中に直接書くか、inline関数として外に書くしか無い様です。 struct coord { friend coord operator + (coord ob1, int i); { return ob1.??? + i; } }; 又はfriendを外してヘッダに書く inline coord operator + (coord ob1, int i); { return ob1.??? + i; } >>ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します stdafx.hをクリックして、ヘッダを開き、 // TODO: プログラムに必要な追加ヘッダーをここで参照して下さい。 とコメントされている付近に#include<iostream>と書いて見て下さい。 それでも駄目であった場合は、ソリューションごとクリーンしてビルドし直して見て下さい。 VC60も使用する事があるのなら、MicroSoftのホームページから、VC60用のサービスパックをダウンロードしておく事をお勧めします。 最新はSP6です。 SP5ではインラインアセンブラでmmx/sse命令を書くことが出来る様になっています。しかし、SP6ではc++のテンプレートパラメータの問題の一部が改善された反面、mmx/sse命令が使えなくなってしまいました。 どちらを選ぶかは、質問者様次第です。 http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/VS6SP6.aspx
- Tacosan
- ベストアンサー率23% (3656/15482)
ちょっと待て. 「#include<iostream> でコンパイルエラーが出る」って書いてあるけど, 正確にどのようなエラーか書けますか?
- aris-wiz
- ベストアンサー率38% (96/252)
> 何かアップデート等で直す事はできないのでしょうか? 少し検索すれば分かるとおもいますが、 VC6はもう10年以上前の古いコンパイラです。 マイクロソフトはその後継版を既に無償で提供しています。 最新は、Visual Studio 2008 でVC9と呼ばれています。
補足
Visual Studio 2008は入れてあるんですが、 VC6.0とは操作方法が異なるみたいでよくわからないんですよね・・ そのままソースコピペしてコンパイルすると、 #include<iostream> でコンパイルエラーが出るほどですし・・・
- jacta
- ベストアンサー率26% (845/3158)
> 少し検索したところVC++6.0だとバグで起こってしまうとのことですが、この状態からコンパイルエラーを無くすには何をしたらよいのでしょうか? バグの無いコンパイラに変えるのが一番簡単な方法です。
補足
それがわからないので困ってます 何かアップデート等で直す事はできないのでしょうか?
補足
こんな感じです。 VC++2008ExpressEdition自体使用が初めてです。 ------ ビルド開始: プロジェクト: XXXX, 構成: Debug Win32 ------ コンパイルしています... XXXX.cpp .\XXXX.cpp(1) : warning C4627: '#include <iostream>': プリコンパイル済みヘッダーの使用を検索中にスキップされました ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します .\XXXX.cpp(46) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? ビルドログは "file://c:\Users\TXX-PN034\Documents\Visual Studio 2008\Projects\XXXX\XXXX\Debug\BuildLog.htm" に保存されました。 XXXX - エラー 1、警告 1 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========