функции друзья
От: nen777w  
Дата: 02.07.08 11:51
Оценка:
Чёт я торможу.

Есть h файл. Назовём его a.h

namespace A {
  namespace AA {
    Object* get_object( Object* root );
  }
}


другой h Назовём его Object.h

class Object
{
  friend A::AA::get_object( Object* root );
}


При компиляции Object.cpp
получаю:
error C2653: 'A' : is not a class or namespace name

Хотя по идее компилятор не должны бимбосить friend, так как это используется только когда компилится друг. В данном сл. A::AA::get_object()

Что не так?
friend
Re: функции друзья
От: jazzer Россия Skype: enerjazzer
Дата: 02.07.08 11:53
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Есть h файл. Назовём его a.h

N>другой h Назовём его Object.h

N>При компиляции Object.cpp

N>получаю:
N>error C2653: 'A' : is not a class or namespace name

N>Хотя по идее компилятор не должны бимбосить friend, так как это используется только когда компилится друг. В данном сл. A::AA::get_object()



"бимбосить" — это что?

а по теме — ты a.h подключил до объявления друга?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: функции друзья
От: nen777w  
Дата: 02.07.08 12:06
Оценка: :)
J>"бимбосить" — это что?

бимбосить = волновать.

J>а по теме — ты a.h подключил до объявления друга?


Нет.
Если бы get_object() была объявлена в глобальном пространстве имён то мне бы не пришлось подключать a.h почему если она в user namespace я должен?
Re[3]: функции друзья
От: Erop Россия  
Дата: 02.07.08 12:12
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Нет.

N>Если бы get_object() была объявлена в глобальном пространстве имён то мне бы не пришлось подключать a.h почему если она в user namespace я должен?

По стандарту
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: функции друзья
От: Bell Россия  
Дата: 02.07.08 12:19
Оценка:
Здравствуйте, nen777w, Вы писали:

...

N>Хотя по идее компилятор не должны бимбосить friend, так как это используется только когда компилится друг. В данном сл. A::AA::get_object()

N>Что не так?

В данном случае используется квалифицированное имя, поэтому пространства имен и само имя функции должны быть видимы.
class Object;
namespace A
{
   namespace AA 
   {

      Object* get_object( Object* root );
   }
}

class Object
{
  friend  Object* A::AA::get_object( Object* root );
};
Любите книгу — источник знаний (с) М.Горький
Re[2]: функции друзья
От: nen777w  
Дата: 02.07.08 12:22
Оценка:
B>В данном случае используется квалифицированное имя, поэтому пространства имен и само имя функции должны быть видимы.

Жаль что так "по стандарту".
Что такое квалифицированное имя?

За правку кода спасибо , я его набирал прямо тут для примера.
Re[3]: функции друзья
От: Bell Россия  
Дата: 02.07.08 12:23
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Что такое квалифицированное имя?

Имя, содержащее ::
Любите книгу — источник знаний (с) М.Горький
Re[3]: функции друзья
От: jazzer Россия Skype: enerjazzer
Дата: 02.07.08 12:38
Оценка:
Здравствуйте, nen777w, Вы писали:

J>>"бимбосить" — это что?


N>бимбосить = волновать.


а я вот в плане повышения общей образованности интересуюсь (или как там Печкин эту фразу говорил) — что за этимология у этого чудесного слова?

J>>а по теме — ты a.h подключил до объявления друга?


N>Нет.

N>Если бы get_object() была объявлена в глобальном пространстве имён то мне бы не пришлось подключать a.h почему если она в user namespace я должен?

неквалифицированный друг класса, если он объявляется именно в этой декларации друга (т.е. если он не был уже объявлен ранее) помещается не в глобальное пространство имен, а в то, в котором объявлен сам класс, в твоем случае — A::AA.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: функции друзья
От: nen777w  
Дата: 02.07.08 13:09
Оценка:
J>>>"бимбосить" — это что?
N>>бимбосить = волновать.
J>а я вот в плане повышения общей образованности интересуюсь (или как там Печкин эту фразу говорил) — что за этимология у этого чудесного слова?

А я знаю
Слово понравилось, остальное меня не бимбосит.
Может оксфордский английский словарь знает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.