McTomas
Member
Having problems with Memb
Hi
Is there a way to have my "Memb<Shape> _shapes" container as an attribute of my object?
Everytime I try to put it as an attribute of my object it gives me this error.
But when I put the "Memb<Shape> _shapes" at the top of my .cpp object file, the game works just fine, and Memb does it job correctly.
Probably I'm doing something wrong, but I've tried Memb<Shape>::Memb(), Memb<Shape>(), _shapes.replaceClass(Shape) in the construction object but nothing.
Don't know what else to do :S
Attached File(s)
Image(s)
07-12-2010 01:49 AM
Esenthel
Administrator
RE: Having problems with Memb
maybe you zero the memory of the memory container or object?
Memb<Shape> memb; is ok
but after that, you can't zero it
07-12-2010 10:52 AM
McTomas
Member
RE: Having problems with Memb
I don't zero it. This is my code for ship.cpp and in the Ship attributes(ship.h) I put Memb<Shape> _shapes;
Code:
/******************************************************************************/
//Memb<Shape> _shapes;
/******************************************************************************/
Ship::Ship(Vec position) {
pos = _posInit = position;
T.resetPos();
}
void Ship::resetPos() {
Tri tri = Tri(Vec(-0.06,-0.06,0), Vec(0.06,-0.06,0), Vec(0,0.06,0));
REPD(i,3) {
_shapes.New() = Shape(tri.edge(i));
}
}
This only works when I remove _shapes from ship.h and uncomment //Memb<Shape> _shapes; from ship.cpp
I'm confused here :S
Thanks for the reply
07-12-2010 01:24 PM
Esenthel
Administrator
RE: Having problems with Memb
what's your Ship constructor, is it properly called?
07-12-2010 01:39 PM
McTomas
Member
RE: Having problems with Memb
Thank you very much
...The problem is that I had an Ship(){} contructor that was cleaning the ship. Thanks
07-12-2010 03:35 PM
McTomas
Member
RE: Having problems with Memb
Hi.
I noticed a problem when using Memb or Cache(in my case Fonts Cache). Probably the problem is with my coding, but it's a strange problem.
Code:
struct A {
A() { Font *font = Fonts(S+"fontA.gfx"); }
}
struct B {
B(){}
B(String name) { Font *font = Fonts(S+"font"+name+".gfx"); }
}
If I call in the code
Quote: A fontA;
fontA = A();
I get problems with pointers in the Cache Font
If I call in the code
Quote: B fontB;
fontB = B("BBB");
I got no problems.
I just want to understand this problem. Why with A I got the problems with the Fonts cache?
Thank you very much
(This post was last modified: 07-19-2010 11:41 PM by McTomas .)
07-19-2010 11:41 PM
Driklyn
Member
RE: Having problems with Memb
Is fontA a global variable? If so, that's probably the problem. The default constructor is being automatically called at the start of the program before the engine has been initialized.
07-20-2010 07:41 AM
Esenthel
Administrator
RE: Having problems with Memb
you can load a font after the engine has been initialized (after global function Init)
07-20-2010 12:09 PM
McTomas
Member
RE: Having problems with Memb
No the fontA isn't a global variable. Thanks I understand it now
Just another question.
How can I implement a get to return an Memb attribute. example:
Code:
Memb<Shape> shapes;
Memb<Shape> getShapes() { return shapes; }
In the compilling he never accepts Memb to be a return type. How can I do that?
Thank again
07-20-2010 01:13 PM
Driklyn
Member
RE: Having problems with Memb
getShapes() needs to return a reference to shapes, so...
Code:
Memb<Shape> shapes;
Memb<Shape> &getShapes() { return shapes; }
07-20-2010 09:25 PM
Esenthel
Administrator
RE: Having problems with Memb
thanks, I should remove the 'explicit' keyword for that from the header
reference is good solution
if you want to create new memory container when returning, you can use Memc (it doesn't have explicit keyword)
I'll remove explicit for Memb for next release.
07-20-2010 09:34 PM
McTomas
Member
RE: Having problems with Memb
Thank you for the explanation and the fix
07-20-2010 11:54 PM