2016-05-24 5 views
0

Я получаю следующую ошибку при компиляции в linux.C++ Ошибка компиляции Linux

file.cxx:283:9: error: reference to ‘multimap’ is ambiguous 
file.cxx:273:47: error: candidates are: std::multimap, std::basic_string > multimap 

-> часть образца кода

static std::multimap<std::string,std::string> multimap; //line no. 273 
// 
void foo() 
{ 
    if (multimap.size() == 0) 
    { 
     multimap.insert(std::pair< std::string, std::string >("A" , "B")); 
    } 
} 

Заранее спасибо

+3

У Вас есть 'используя патезрасе,' в верхней части файла? – TartanLlama

+3

Помимо ответов на них: Общие (и простые) рекомендации: не используйте идентификаторы с тем же именем, что и стандартные компоненты библиотеки. – kebs

+0

@kebs нет причин для такого совета. Вместо этого не используйте 'using namespace std' или' using std :: whatever'. – rubenvb

ответ

1

Вы, вероятно, using namespace std; в файле. Это означает, что ваш компилятор уже знает «multimap», который вы пытаетесь определить снова, и в этом случае компилятор не знает, что вы имеете в виду.

0

В std есть член function, и вы вставили его в свое пространство имен. Избегайте использования using namespace std; вы можете импортировать то, что вам нужно так:

using std::multimap;

using std::string;

Смежные вопросы