M
Magnus Hiie
Hello,
I compiled some source with the new Visual Studio 2005 C++ compiler and
got some unexpected error. Most other compilers (incl. VC6, gcc) are
fine with the code.
Extracted sample:
class FriendClass
{
class MemberClass
{
private:
int member;
static int staticMember;
friend class FriendClass;
};
public:
FriendClass(void);
};
FriendClass::FriendClass(void)
{
int FriendClass::MemberClass::* ptr =
&FriendClass::MemberClass::member; // C2326
int *i = &FriendClass::MemberClass::staticMember; // OK
int FriendClass::MemberClass::* ptr2 = &MemberClass::member; // OK
int *i2 = &MemberClass::staticMember; // OK
}
Is this code legal in C++ or is the VC2005 compiler right?
Best regards,
Magnus
I compiled some source with the new Visual Studio 2005 C++ compiler and
got some unexpected error. Most other compilers (incl. VC6, gcc) are
fine with the code.
Extracted sample:
class FriendClass
{
class MemberClass
{
private:
int member;
static int staticMember;
friend class FriendClass;
};
public:
FriendClass(void);
};
FriendClass::FriendClass(void)
{
int FriendClass::MemberClass::* ptr =
&FriendClass::MemberClass::member; // C2326
int *i = &FriendClass::MemberClass::staticMember; // OK
int FriendClass::MemberClass::* ptr2 = &MemberClass::member; // OK
int *i2 = &MemberClass::staticMember; // OK
}
Is this code legal in C++ or is the VC2005 compiler right?
Best regards,
Magnus