0

過去3日間のビルドに費やしたプログラムをコンパイルしようとしていますが、エラーのスローを停止する方法がわかりません。コンパイルエラー「Foo::barへの未定義の参照」が発生し続けます。ここで「bar」はFoo.hファイルで宣言された静的なofstreamです。

Foo.h

Class Foo
{
    public:
          <insert methods>
    private:
          static ofstream& bar;
 }

Foo.cpp

#include <iostream>
#include <fstream>
#include <sstream>
#include "EventReport.h"
using namespace std;

Foo::Foo()
{
   bar.open("foobar.txt");
}

Foo.cppの「バー」にエラーメッセージが表示され続けます(ファイルには複数あります)。理由について何かアイデアはありますか?

4

1 に答える 1

0
undefined reference to Foo::bar

このエラーは、このオブジェクトが存在することをコンパイラに通知したことを意味します...

class Foo {
      static ofstream& bar;
};

...そしてコンパイラはそれを使用することにしました。

しかし、あなたはそれを定義したことはありません。未定義です。

これをFoo.cppに追加します。

ofstream& Foo::bar = (something);
于 2013-03-08T01:05:11.473 に答える