0

----编辑解决方案找到,错误的类命名空间。这篇文章可能就是一个例子

我收到了这个错误,所以我很困惑我到底做错了什么。在 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 的大小未知......所以有两个愚蠢的错误。

classQ - 没有问题。

这里有什么意义,有人知道吗?(我对各种命名空间进行操作,如果有必要,我可以将其添加到这篇文章中)

4

1 回答 1

1

我猜你正在做的是:

header1.h

namespace N{
  class classW{ };
}

header2.h

namespace M{
  class classQ{ };
}

一些.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 回答