0

---- EDITソリューションが見つかりました、クラスの名前空間が間違っています。この投稿はその一例かもしれません

私はこのエラーを受け取ります、そしてそれで私は私が正確に間違っていることを混乱させます。some.cppで私は宣言します:

.cpp:

#include "header1.hpp"
#include "header2.h"

using namespace wre;
namespace awq
{
  //somethings
  void function()
  {
      std::vector<classW>::iterator it1; //I mean class upr::classW
      std::map<int, classQ> map1; //I mean class pwe::classQ
      //iterations which don't work
  }
}

header1.hpp

namespace upr
{
class classW
   {
        //things
   }
}

header2.h

namespace wre
{
   class classQ
   {
      //things
   }
}

なぜこのclassWが表示されないのですか?結果として、it1のサイズは不明です...2つのばかげたエラーです。

classQ-問題はありません。

ここでのポイントは何ですか、誰もが知っていますか?(私はさまざまな名前空間を操作していますが、必要に応じてこの投稿に追加できます)

4

1 に答える 1

1

私はあなたがしていることは次のとおりだと思います:

header1.h

namespace N{
  class classW{ };
}

header2.h

namespace M{
  class classQ{ };
}

some.cpp

#include "header1.h"
#include "header2.h
std::vector<classW>::iterator it1;
std::map<int, classQ> map1;

ここから、コンパイラがグローバル名前空間からclassW / classQを見つけることができないため、未定義のclassW/classQエラーが発生します。

次のようなsome.cppを実装できます。

 #include "header1.h"
 #include "header2.h
 std::vector<N::classW> v1;
 std::vector<N::classW>::iterator it1;
 std::map<int, M::classQ> map1;

しかし、これはすべて私の推測です。コードで実際に何が起こっているかを確認するには、さらに多くのコードを確認する必要があります。

于 2012-12-07T10:26:51.800 に答える