—-РЕДАКТИРОВАТЬ
Решение найдено, неправильные пространства имен для классов. Этот пост может быть примером тому
Я получаю эту ошибку, и поэтому я не совсем понимаю, что именно я делаю неправильно.
в some.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
}
}
Почему он не видит этот классW? Как следствие, он1 имеет неизвестный размер … поэтому две глупые ошибки.
classQ — нет проблем.
Какой смысл здесь, кто-нибудь знает?
(Я оперирую различными пространствами имен, я могу добавить его в этот пост, если это необходимо)
Я думаю, что вы делаете, это:
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;
Но это все мои догадки, нужно увидеть больше кода, чтобы увидеть, что на самом деле происходит в вашем коде.
Других решений пока нет …