2011-12-26 2 views
-2

я написал пример program.below:не в состоянии вставить элементы в набор в C++

#include<iostream> 
#include<string> 
#include<set> 
using namespace std; 

int main() 
{ 

std::set<std::string> m; 
m.insert("1-2-1-1"); 

return 0; 
} 

Это прекрасно работает без каких-либо ошибок.

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

 /export/SunStudio/SUNWspro/bin/CC -c -compat=5 -features=no%altspell -features=no%export -mt +d -DTHREAD -DSOLARIS -staticlib=rwtools7 -library=rwtools7,iostream -DOWTOOLKIT_WARNING_DISABLED -Bsymbolic -PIC -g0 -DBPDEBUG -I. -I../nls -I../../cnacore/api -I../../cnacore/external -I../../cnacore/stl -I../../cnabp/kernel -I/vobs/oss_design/sab/inc -I/vobs/oss_design/tbs/inc -I/vobs/oss_design/tss/inc -I/vobs/oss_design/tds/inc -I/vobs/oss_design/eam/inc -I/vobs/ossrc_3pp/cif_3pp/borland_enterprise_server/include -I/vobs/ossrc_3pp/cif_3pp/borland_enterprise_server/include/stubs -I/vobs/ossrc_build_dependencies/extracted_packages/ERICsnlm/include -I/vobs/ossrc_3pp/cif_3pp/sybase_ase/OCS-15_0/include -I/vobs/cna/src/features cacup_bsc.cc 
"cacup_bsc.cc", line 6545: Error: Multiple declaration for valid. 
"cacup_bsc.cc", line 6545: Error: "," expected instead of ".". 
"cacup_bsc.cc", line 6548: Error: Multiple declaration for valid. 
"cacup_bsc.cc", line 6548: Error: "," expected instead of ".". 
"cacup_bsc.cc", line 6552: Error: std::set_intersection<std::InputIterator1, std::InputIterator2, std::OutputIterator>(std::InputIterator1, std::InputIterator1, std::InputIterator2, std::InputIterator2, std::OutputIterator) is not a static data member. 
"cacup_bsc.cc", line 6552: Error: Cannot use std::insert_iterator<std::set<std::string>> to initialize int. 
"cacup_bsc.cc", line 8903: Warning: A non-POD object of type "bpDU" passed as a variable argument to function "std::sprintf(char*, const char*, ...)". 
"cacup_bsc.cc", line 8906: Warning: A non-POD object of type "bpDU" passed as a variable argument to function "std::sprintf(char*, const char*, ...)". 
6 Error(s) and 2 Warning(s) detected. 
*** Error code 6 
clearmake: Error: Build script failed for "cacup_bsc.o" 

Ниже приведен код, который я добавил. , но после того, как комментируя ниже code.The компиляции успешно

/* 
std::set<std::string> valid; 
valid.insert(string("1-1")); 

std::set<std::string> planned; 
valid.insert(string("1-1")); 

std::set<std::string> result; 

std::set_intersection(valid.begin(), valid.end(), planned.begin(), planned.end(), std::inserter(result, result.end())); 
*/ 

     /export/SunStudio/SUNWspro/bin/CC -c -compat=5 -features=no%altspell -features=no%export -mt +d -DTHREAD -DSOLARIS -staticlib=rwtools7 -library=rwtools7,iostream -DOWTOOLKIT_WARNING_DISABLED -Bsymbolic -PIC -g0 -DBPDEBUG -I. -I../nls -I../../cnacore/api -I../../cnacore/external -I../../cnacore/stl -I../../cnabp/kernel -I/vobs/oss_design/sab/inc -I/vobs/oss_design/tbs/inc -I/vobs/oss_design/tss/inc -I/vobs/oss_design/tds/inc -I/vobs/oss_design/eam/inc -I/vobs/ossrc_3pp/cif_3pp/borland_enterprise_server/include -I/vobs/ossrc_3pp/cif_3pp/borland_enterprise_server/include/stubs -I/vobs/ossrc_build_dependencies/extracted_packages/ERICsnlm/include -I/vobs/ossrc_3pp/cif_3pp/sybase_ase/OCS-15_0/include -I/vobs/cna/src/features cacup_bsc.cc 
"cacup_bsc.cc", line 8902: Warning: A non-POD object of type "bpDU" passed as a variable argument to function "std::sprintf(char*, const char*, ...)". 
"cacup_bsc.cc", line 8905: Warning: A non-POD object of type "bpDU" passed as a variable argument to function "std::sprintf(char*, const char*, ...)". 
2 Warning(s) detected. 

ниже код, который я добавил:

std::set<std::string> valid; 
valid.insert(string("1-1")); 

может любой дать мне правильное направление?

Ниже флаги компиляции:

/export/SunStudio/SUNWspro/bin/CC -c -compat=5 -features=no%altspell -features=no%export -mt +d -DTHREAD -DSOLARIS -staticlib=rwtools7 -library=rwtools7,iostream -DOWTOOLKIT_WARNING_DISABLED -Bsymbolic -PIC -g0 -DBPDEBUG 

но для примера программы я просто компиляции, как показано ниже:

/export/SunStudio/SUNWspro/bin/CC 0001.cc 
+1

[This] (http://ideone.com/kVV73) компилирует, покажите нам свой реальный код. –

+4

Будет относительно сложно ответить на этот вопрос в его нынешней форме. Можете ли вы объединить минимальный тестовый пример, который мы можем запустить через компилятор, который создает ошибку, которую вы видите? –

+0

@ als.i знаю, что этот код действительно компилируется при использовании напрямую. Именно поэтому я должен был задать вопрос. Возможно, сомнение в том, что я компилирую, создает проблему. FYI, я добавил точно такие же строки в между существующим кодом. Я также вставил флаги компиляции. – Vijay

ответ

3

Похоже, у вас есть две переменные в одной и той же функции, которые называются «действительный». Переименуйте новую переменную в valid2 или измените свой код, чтобы использовать только одну переменную с именем valid с одной декларацией.

Вы не можете просто написать код, например valid.insert(string("1-1"));, если он не находится внутри функции. В приведенном ниже комментарии вы сказали, что это не функция. Вам нужно найти конструктор std::set<std::string>, который имеет тот же эффект, что и вызов insert.

+0

Нет, я держу любое имя для него. Дает мне ту же ошибку. – Vijay

+1

Ваш файл длиной до 6544 строк. Это ужасно. Как долго вы отлаживаете функцию? Может быть, у вас возникли проблемы с мыслью о том, что вы уже не думали? Почему бы вам не опубликовать функцию? –

+0

Я не добавлял строки в функцию. Я добавил строки чуть ниже #includes. – Vijay

0

Скорее всего, у вас есть другое объявление для valid в области видимости, следовательно, ошибка множественного объявления.

+0

НЕТ Я пытаюсь сохранить любое имя для него. Дает мне ту же ошибку. – Vijay

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