класс — c ++ ошибка C2065: необъявленный идентификатор

—-РЕДАКТИРОВАТЬ
Решение найдено, неправильные пространства имен для классов. Этот пост может быть примером тому

Я получаю эту ошибку, и поэтому я не совсем понимаю, что именно я делаю неправильно.
в 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 — нет проблем.

Какой смысл здесь, кто-нибудь знает?
(Я оперирую различными пространствами имен, я могу добавить его в этот пост, если это необходимо)

0

Решение

Я думаю, что вы делаете, это:

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;

Но это все мои догадки, нужно увидеть больше кода, чтобы увидеть, что на самом деле происходит в вашем коде.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]