質問

私の持つ問題の基本的な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> この場を取り除く coutsでコンパイル。かがでしょうか。私は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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top