Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Using Namespace ?
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
Normann
Код
#include <stdio.h>

namespace _overspace
{
    
_CRTIMP int __cdecl puts(const char* szSrc)
{
    return ::puts(szSrc);
};

} //_overspace

int main(int argc, char *argv[])
{
    using namespace _overspace;
    puts("start program..."); //выдаст ошибку под названием error C2668: 'puts' : ambiguous call to overloaded function
    
    system("PAUSE");
    return EXIT_SUCCESS;
    
}

VC60
В книжке написано что using namespace можно использовать вместо namespace:: , из-за чего здесь ошибка?
sax_ol
Вы наверное неправильно прочитали.
Kmet
Цитата(Normann @ 2:07:2008 - 19:08) *
В книжке написано что using namespace можно использовать вместо namespace:: , из-за чего здесь ошибка?

не совсем вместо... читайте правильные книги

в данном случае компилятор не может определить какую функцию вызвать, стандартный puts или _overspace::puts
Normann
Цитата(Kmet @ 2:07:2008, 22:27 ) *
в данном случае компилятор не может определить какую функцию вызвать, стандартный puts или _overspace::puts

Я не слепой, сообщеня компилятора читать умею.
если есть using namespace то согласно написаному
Цитата(из книги)
Если в программе требуется определить некоторые идентификаторы, которые, как Вы подозреваете, могут переопределить уже имеющиеся, просто заведите свое собственное, новое пространство имен. Это достигается путем использования ключевого слова namespace
...
Для того, чтобы указать компилятору, что следует использовать имена из конкретного именного пространства, можно воспользоваться операцией разрешения видимости:
NewNameSpace::x = 5;
Однако, если в программе обращения к собственному пространству имен производится довольно часто, то такой синтаксис вызывает определенные неудобства. В качестве альтернативы можно воспользоваться инструкцией using, синтаксис которой имеет две формы:
using namespace имя_пространства_имен;
или
using namespace имя_пространства_имен::идентификатор;
При использовании первой формы компилятору сообщается, что в дальнейшем необходимо использовать идентификаторы из указанного именного пространства вплоть до того момента, пока не встретится следующая инструкция using.

обращение к имени не должно вызывать конфликтов.
Вопрос еще раз, из-за чего здесь ошибка? И еще что я не правильно прочитал?
Kmet
Цитата(Normann @ 3:07:2008 - 10:26) *
обращение к имени не должно вызывать конфликтов.

как видишь, компилятор другого мнения

Цитата(Normann @ 3:07:2008 - 10:26) *
using namespace имя_пространства_имен;
или
using namespace имя_пространства_имен::идентификатор;
При использовании первой формы компилятору сообщается, что в дальнейшем необходимо использовать идентификаторы из указанного именного пространства вплоть до того момента, пока не встретится следующая инструкция using.

бред,,, читайте правильные книжки,

при использовании using компилятор будет пытаться разрезолвить индентификторы без префикса не только для "общего" нэймспэса, но и для всех нэймспэсов указанных через using для данной области видимости
sax_ol
Да да, название книги и автора предъявите
Normann
С.В.Глушаков А.В.Коваль С.В.Смирнов "Язык программирования C++" (2001г.)

Тогда дайте ссылку на правиьных авторов.
sax_ol
Цитата(Normann @ 6:07:2008 - 07:06) *
дайте ссылку
http://msdn.microsoft.com/en-us/default.aspx и обещали скоро перевод сделать.
Normann
Цитата(sax_ol @ 6:07:2008, 23:15 ) *
http://msdn.microsoft.com/en-us/default.aspx и обещали скоро перевод сделать.

А че, типа русских авторов нету чтоли? Я не владею английским на столько чтобы просто так вот читать книги на нем.
sax_ol
Цитата(Normann @ 7:07:2008 - 07:47) *
А че, типа русских авторов нету чтоли?
А тут разве ничего нет?


А зачем именно русских? Есть же в переводе.
European
Цитата(Normann @ 7:07:2008 - 07:47) *
А че, типа русских авторов нету чтоли? Я не владею английским на столько чтобы просто так вот читать книги на нем.

Русские авторы хороши только для написания книг из раздела "для чайников". Читайте переводы гуру С++

Саттер, Майерс, Александреску, Липпман
Normann
Цитата(sax_ol @ 7:07:2008, 10:05 ) *
А тут разве ничего нет?

Ну мало ли кто там че кидает.

Цитата(sax_ol @ 7:07:2008, 10:05 ) *
А зачем именно русских? Есть же в переводе.

Да, точно, пардон, я выразился не правильно.

Цитата(European @ 7:07:2008 - 11:22) *
Русские авторы хороши только для написания книг из раздела "для чайников". Читайте переводы гуру С++

Спасибо. А за державу обидно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.