Virtual Static Functions Revisited
Hi guys,
I have a problem that would be solved nicely with the use of static
virtual functions. I know that C++ doesn't directly support these. So,
I'm looking for "modern" ways of faking such a thing, if they exist.
For instance:
class File;
class Shape
{
virtual void Draw() = 0;
virtual ~Shape() {}
// Wish I had this:
// virtual static Shape& CreateFromFile(const File&) = 0;
};
So I took a look at [20.8] in the FAQ, but it doesn't really solve my
problem. In particular, I see two issues:
1) I don't see how the "clone" function qualifies as a constructor.
2) The "create" function *also* requires an *existing* instance!
E.g. in the example they have:
void userCode(Shape& s)
{
Shape* s2 = s.clone();
Shape* s3 = s.create();
...
delete s2; // You need a virtual destructor here
delete s3;
}
Where is that original `s' supposed to come from?
What I would like to accomplish is to create a brand-new Shape, from
scratch (i.e. given a File), and virtually. Is there any way to do this?
(I'm open to portable hacks, macros, etc. as well).
Thanks!
-Al-
PS: Is native support for virtual statics expected in C++0x or through
defect reports?
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]