質問
私の持つ問題の基本的なC++プログラム。いいえ、私を含まない .cpp
ファイル!
この部品が追加されています。
main.cpp:
#include "header.h"
#include <iostream>
int main() {
std::cout << "Hello!";
}
ヘッダを表します。h:
#ifndef _HEADER_H
#define _HEADER_H
class Something {
public:
printContents();
};
#endif
something.cpp:
#include "header.h"
#include <iostream>
Something::printContents() {
cout << "This class's Contents!!";
}
で起こっていることが私のコンパイラエラーい:複数の定義の一部を標準Cは、ご利用によって生じたいかな strtod
:
g++-オー---主なものです。o
build/....主なものです。o:機能 `strtod':../MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../するようになりますのでstdlib.h:318:複数の定義のstrtod'
build/..something.o:...something.cpp:(.テキスト+0x0):最初にここで定義したcollect2:ld 返される1終了ステータス
ばっくす #include <iostream>
この場を取り除く cout
sでコンパイル。かがでしょうか。私はg++、Xsltproc、準備をしている。
また、コマンドライン:
g++ *.h *.cpp -o program
と同じことが起こりました。
解決 6
問題があるMinGWのマルチインストールしていました。私は1つがすでにインストールされていた、と私は自分のコンピュータ上のQtを得たとき、それはそれ自身のMinGWをインストールしていました。残念、私は私の大学のサーバーにコードを移植し、それがOK走っています。
残念!!
助けてくれてありがとうみんなは、私は間違いなく、将来的にあなたのガイドラインに従います。
ヘッダー名 - 下線なし 正しい戻り値の型 フォーラムでの実際のコード!
レオBruzzaniti
他のヒント
その_HEADER_H
はC ++ユーザーコードでは違法名であることに注意してください - アンダースコアと大文字で始まる名前はC ++実装のために予約されています。これは通常、顕著な問題を引き起こすことはありませんが、あなたは、この文脈でHEADERような実装に共通の名前かもしれないものを使用する場合、それも可能性があります。
変更、
Something::printContents()
{
std::cout << "This class's Contents!!";
}
注:戻りデータ型を指定します。
。あなたの問題の一つは、右ここにあります:
私は、コマンドラインで試してみました:G ++ * .hの * .cppファイルの-oプログラム
このような何かを試してみてください...あなたのヘッダファイルを渡さないでください。
G ++ * .cppファイル-oプログラム
いを再現●正確な問題です。私はこれをコンパイルやリンクもに、下記の注意
- を追加
void
戻り値の型のprintContents
機能(いというvoid printContents();
のヘッダvoid Something::printContents() {
の実行ファイル) - 使用
std::cout
だけではなくcout
.cout
が定義されていないの範囲で使用され - 必ずヘッダを表します。h終了空線
- 使用
HEADER_H
よ_HEADER_H
(Neil Butterworthい)
を利用したいコマンドライン g++ main.cpp something.cpp
をコンパイル。
私は問題のカップルを参照してください。あなたは、関数の戻り値を定義shuold
printContents()
とあなたが書く必要があります。
std::cout
あなたが書いていない場合は、
using namespace std;