Topic: Improved handling for partially constructed objects?
Author: nobody@nowhere.com ("Anonymous")
Date: Mon, 24 Feb 2003 19:56:13 +0000 (UTC) Raw View
"John Nagle" <nagle@animats.com> wrote in message
news:JsT2a.302$9G2.40698922@newssvr14.news.prodigy.com...
> Over the years, C++ has acquired more attributes (volatile,
> mutable, explicit) to deal with similar ambiguous situations.
> What's needed here is a way to say "under construction".
> This leads to restrictions similar to those for an
> class whose declaration isn't visible - pointers to
> it can be manipulated, but you can't access its members.
This fits in my idea of private variables. For example,
struct S {int x; private: int y;};
int main()
{
S s;
private S& ref = s;
ref.x = 3; //Error; cannot access member of private structure 'ref'
public S& ref2 = private_cast<public S&>(s);
ref.y = 4; //OK.
}
---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html ]
Author: nagle@animats.com (John Nagle)
Date: Mon, 17 Feb 2003 17:07:57 +0000 (UTC) Raw View
One common construct is a backpointer, where one object
creates another object that points back to the first.
class B;
class A {
private:
B& owned;
public:
A();
};
class B {
private:
A& owner;
public:
B(A& myowner)
: owner(myowner) {}
};
A::A() // constructor implementation
{ owned = *new B(*this); } // ILLEGAL - passed unconstructed "this"
This is a common, although illegal, idiom. It should
be regularized.
Over the years, C++ has acquired more attributes (volatile,
mutable, explicit) to deal with similar ambiguous situations.
What's needed here is a way to say "under construction".
This leads to restrictions similar to those for an
class whose declaration isn't visible - pointers to
it can be manipulated, but you can't access its members.
Comments?
John Nagle
Animats
---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html ]