|
> > > How do you manually call constructors in C++? > > e.g. if you have allocated an array of class instances but weren't allowed to > use new(), and the classes have stuff in the constructor which is important, but > you can't move it into an .Init() function because they are other classes within > the private: data of the class. > (It's great working with other peoples code isn't it!) > > > I tried doing > for (i=0;i.MyClass(); > > But no luck: > "error C2274: 'function-style cast' : illegal as right side of '.' operator"
You want.. placement new!
For example,
void* mem=malloc(sizeof(FooClass));
FooClass* p = new(mem) FooClass(999);
To delete the object, as you found you can call destructors, then just free the memory. > > > Weirdly: > for (i=0;i.~MyClass(); > works! > > > You learn something old everyday... >
|