F
fake
What exactly does the line:
rGfxOptionsWnd* m_pGfxOptionsWnd;
do?
I have chased this bug and narrowed it down to something that I believe
should not happen and I don't even know what could possibly cause it to
happen.
My basic application structure is simple.
An Application Class,
An App Class derived from the Application Class
The application class has a member varible which is a Paramater class
e.g.
Application {
Public:
Param_class m_Params;
};
In it's constructor Application instalises m_Params values.
m_Params.Window.bWindowed = false;
m_Params.Window.width = 500;
m_Params.Window.height = 500;
m_Params.Window.icon = NULL;
m_Params.Window.title = "rDirectXApp Default Window Title";
m_Params.Window.wnd_type = RJM_WNDT2;
m_Params.Window.res_x = 0;
m_Params.Window.res_y = 0;
m_Params.Window.esc_to_quit = true;
In it's Constructor, App (Derived from Application) then alters some of the
values as nessecary.
m_Params.Window.icon = (const char *) IDI_ICON1;
m_Params.Window.title = "Super Game in this window!!!";
m_Params.Window.bWindowed = true;
m_Params.Window.wnd_type = RJM_WNDT5;
m_Params.Window.width = 600;
m_Params.Window.height = 300;
m_Params.Window.bWindowed = true;
m_Params.Window.res_x = 100;
m_Params.Window.res_y = 100;
Now I can compile and run this code perfectly. I have set break points on
each line shown here and I can watch the values as they go through this
process and change.
I have another completely empty class, just an empty constructor and
destructor.
RGfxOptions. I add the following line into Applications private section:
rGfxOptionsWnd* m_pGfxOptionsWnd;
With this line in the program I run the debug version of the program.
The Application constructor sets up m_Param exactly as it's supposed to.
Control then passes to App's constructor.
When: m_Params.Window.icon = (const char *) IDI_ICON1;
executes, m_Param.Height changes (nothing else)
when m_Params.Window.title = "Super Game in this window!!!";
executes, m_Params.title changes but the new value is corrupt
when m_Params.Window.bWindowed = true;
executes, nothing in m_Params alters
when m_Params.Window.wnd_type = RJM_WNDT5;
executes, nothing
when m_Params.Window.width = 600;
executes bWindowed alters
when m_Params.Window.height = 300;
executes, width alters
when m_Params.Window.bWindowed = true;
executes, nothing
when m_Params.Window.res_x = 100;
executes, wndtype alters but to an invalid value
and after m_Params.Window.res_y = 100;
the program crashes because of the invalid data.
But with the line:
rGfxOptionsWnd* m_pGfxOptionsWnd;
remmed out it all works perfectly.
Can anyone help? What does that line do? How is it possible that the
statement altering the height actually alters the width member variables? I
havn't used or refered to m_pGrgOptionsWnd anywhere at all in my code. How
can simply adding a pointer member varible to my class have this effect?
Thanks in advance for any suggestions. I have absoultly no ideas at the
moment at all!
rGfxOptionsWnd* m_pGfxOptionsWnd;
do?
I have chased this bug and narrowed it down to something that I believe
should not happen and I don't even know what could possibly cause it to
happen.
My basic application structure is simple.
An Application Class,
An App Class derived from the Application Class
The application class has a member varible which is a Paramater class
e.g.
Application {
Public:
Param_class m_Params;
};
In it's constructor Application instalises m_Params values.
m_Params.Window.bWindowed = false;
m_Params.Window.width = 500;
m_Params.Window.height = 500;
m_Params.Window.icon = NULL;
m_Params.Window.title = "rDirectXApp Default Window Title";
m_Params.Window.wnd_type = RJM_WNDT2;
m_Params.Window.res_x = 0;
m_Params.Window.res_y = 0;
m_Params.Window.esc_to_quit = true;
In it's Constructor, App (Derived from Application) then alters some of the
values as nessecary.
m_Params.Window.icon = (const char *) IDI_ICON1;
m_Params.Window.title = "Super Game in this window!!!";
m_Params.Window.bWindowed = true;
m_Params.Window.wnd_type = RJM_WNDT5;
m_Params.Window.width = 600;
m_Params.Window.height = 300;
m_Params.Window.bWindowed = true;
m_Params.Window.res_x = 100;
m_Params.Window.res_y = 100;
Now I can compile and run this code perfectly. I have set break points on
each line shown here and I can watch the values as they go through this
process and change.
I have another completely empty class, just an empty constructor and
destructor.
RGfxOptions. I add the following line into Applications private section:
rGfxOptionsWnd* m_pGfxOptionsWnd;
With this line in the program I run the debug version of the program.
The Application constructor sets up m_Param exactly as it's supposed to.
Control then passes to App's constructor.
When: m_Params.Window.icon = (const char *) IDI_ICON1;
executes, m_Param.Height changes (nothing else)
when m_Params.Window.title = "Super Game in this window!!!";
executes, m_Params.title changes but the new value is corrupt
when m_Params.Window.bWindowed = true;
executes, nothing in m_Params alters
when m_Params.Window.wnd_type = RJM_WNDT5;
executes, nothing
when m_Params.Window.width = 600;
executes bWindowed alters
when m_Params.Window.height = 300;
executes, width alters
when m_Params.Window.bWindowed = true;
executes, nothing
when m_Params.Window.res_x = 100;
executes, wndtype alters but to an invalid value
and after m_Params.Window.res_y = 100;
the program crashes because of the invalid data.
But with the line:
rGfxOptionsWnd* m_pGfxOptionsWnd;
remmed out it all works perfectly.
Can anyone help? What does that line do? How is it possible that the
statement altering the height actually alters the width member variables? I
havn't used or refered to m_pGrgOptionsWnd anywhere at all in my code. How
can simply adding a pointer member varible to my class have this effect?
Thanks in advance for any suggestions. I have absoultly no ideas at the
moment at all!