Привет У меня есть код, который имеет структуру, описанную ниже. Это не настоящий код, но я попытался имитировать проблему, и она дает ту же ошибку.'unordered_set' не называет тип при объявлении его внутри файла заголовка
У меня есть файл с именем classTest.cpp, который содержит:
#include<iostream>
#include "header.h"
using namespace std;
int main()
{
test f;
f.insert(10);
cout<<f.search(10)<<endl;
return 0;
}
header.h содержит следующий код:
#include<unordered_set>
class test
{
public:
int apple;
unordered_set<int> set;
bool search(int a);
void insert(int a);
};
bool test::search(int a)
{
if(apple!=a)
return false;
return true;
/*
if(set.find(a) == set.end())
return false;
return true;*/
}
void test::insert(int a)
{
apple = a;
//set.insert(a);
}
Когда я скомпилировать classTest.cpp я получаю следующее сообщение об ошибке:
header.h:6:2: error: ‘unordered_set’ does not name a type
unordered_set<int> set;
Но когда я копирую содержимое header.h и вставляю его в classTest.cpp, он отлично работает. Я не могу понять причину. Есть ли какая-то базовая концепция, которую мне не хватает?
Вы включая его * до * 'использованием имен станд;', но (видимо), когда вы вставили его, вы положили его после того, , Измените его на 'std :: unordered_set' в заголовке и посмотрите, не улучшились ли вещи. –
Вместо этого используйте 'std :: unordered_set'. Поскольку вы, похоже, не знаете, что «using namespace std;» делает: просто прекратите использовать его и квалифицируйте имена с помощью «std ::». –
О! Это была такая глупая ошибка. Работаю сейчас. – mribot