Steven Schveighoffer wrote:
On Wed, 29 Jul 2009 14:39:07 -0400, Ary Borenszweig <a...@esperanto.org.ar> wrote:

a.b.c = d;

If b is anything that has a struct type, and c is anything else, the statement must report an error.

struct S
{
  int *x;
  void c(int n) {*x = n;}
}

struct S2
{
  int n;
  S b() { return S(&n);}
}

void main()
{
  S2 a;
  a.b.c = 5;
}

Why should this not be allowed?

Simpler yet:

class C { int x; }
struct B { C c; }
struct A { C x; B b() { return B(x); }

void main()
{
   A a;
   a.x = new C;
   a.b.c = 42; // fine, modifies the C object
}


Andrei

Reply via email to