Допустим есть такая ситуация:
namespace a
{
namespace b
{
class C
{
struct D
{
int id;
};
D descr;
friend bool operation <(int lhs, const C::D &rhs);
};
bool operation <(int lhs, const C::D &rhs)
{
retrun lhs == descr.id;
}
}
}
Правильно ли объявлена другом эта операция сравнения? GCC такое компилит на ура, а VC7.1 не хочет. Пишет, что cannot access private struct declared in class 'a::b::C::D'. Кто не прав, а главное как это исправить?
Здравствуйте, Аноним, Вы писали:
...skip...
А>vc 7.1 замечательно компиллируется
А, да. пример немного не правильный, но задо решение проблемы найдено.
Проблема возникает если в .h файле есть только объявление опреации, а тело в .cpp
bool a::b::operator <(int lhs, const C::D &rhs)
{
return lhs == rhs.id;
}
"Mechanicus" <4956@news.rsdn.ru> wrote in message
news:846486@news.rsdn.ru...
[]
> Проблема возникает если в .h файле есть только объявление опреации, а тело в .cpp
> > bool a::b::operator <(int lhs, const C::D &rhs)
> {
> return lhs == rhs.id;
> }
>
Ишь чего захотел. Надо так
namespace a { namespace b {
bool operator <(int lhs, const C::D &rhs)
{
return lhs == rhs.id;
}
} }
Posted via RSDN NNTP Server 1.9 gamma
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Здравствуйте, folk, Вы писали:
>> Проблема возникает если в .h файле есть только объявление опреации, а тело в .cpp
>> >> bool a::b::operator <(int lhs, const C::D &rhs)
>> {
>> return lhs == rhs.id;
>> }
>>
F>Ишь чего захотел. Надо так
F>F>namespace a { namespace b {
F>bool operator <(int lhs, const C::D &rhs)
F>{
F> return lhs == rhs.id;
F>}
F>} }
F>
Да, некрасиво как-то получается. Это требование стандарта, или причуды vc?