|
the class declaration should like this!
class A
{
public:
...
..
private:
B *b;
};
class B
{
public:
...
..
private:
A *a;
};
|
|
|
|
|
Well, you include A, it includes B, it includes A, it includes B....
This sort of stuff messes with your build times as well. Do this:
a.h:
class b{};
class a
{
...
a.cpp:
#include "stdafx.h" // always at the top
@include "b.h"
and vice versa. You're telling the compiler that b is a class, it can worry about the rest later - this works because all you're storing is a pointer, it does not need to know any details about it until it gets to the implimentation ( the .cpp file)
Christian
No offense, but I don't really want to encourage the creation of another VB developer. - Larry Antram 22 Oct 2002
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
During last 10 years, with invention of VB and similar programming environments, every ill-educated moron became able to develop software. - Alex E. - 12-Sept-2002
|
|
|
|
|
hi,
your solution seems don't work... the compiler complain that redefine a class...
anything wrong with me?
|
|
|
|
|
don't include a.h from b.h (and vice versa)
--
Help me! I'm turning into a grapefruit!
|
|
|
|
|
Close. That should be:
class b;
Not:
class b{};
The curly braces are the cause of the "Redefinition" errors.
--------
There are 10 types of people in this world. Those who know binary and those who don't.
|
|
|
|
|
Thanks - that's what I get for answering off the top of my head when I am tired.
Christian
No offense, but I don't really want to encourage the creation of another VB developer. - Larry Antram 22 Oct 2002
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
During last 10 years, with invention of VB and similar programming environments, every ill-educated moron became able to develop software. - Alex E. - 12-Sept-2002
|
|
|
|
|
|
I done this before with the forward-declaration as decriped in other answers.
But after a while I most found that this is a lack of the programming & class architecture.
In all my cases I have changed it somehow to no "back referencing".
possible solution:
a) inheritence
b) merge the classes
c) Make a member
You earn visibility and avoid bugs.
|
|
|
|
|
hi,
first, i don't understand "forward-declaration"...
yes, i think inheritance would be useful!
let me try!
thanks,
chaze
|
|
|
|
|
I have a Dialog App with and it has a list control in it. I want to handle wm_vscroll in the CMyDlg class though, not in a class derived from CTreeCtrl. Everything I've tried doesn't seem to work. How can I do this?
There's always one more bug.
|
|
|
|
|
hi,
can someone please help me with some c++ problems?
i've created a vc++ project using visual studio .net.. my application is a sdi and is using the windows explorer style(left side using treeview and right side using listview).. i've populated my trees in the treeview already, but i don't know how to add/associate control id with event handler functions.. the visual studio .net wizard wasn't very user friendly and i can't seem to find the command in the wizard which allows me to add/associate event handler with control id.. any help is welcome.. thanx in advance.
|
|
|
|
|
Here is the code that I am working with;
void balance(float pmt)
{
float bal_k;
int k=1;
float pay;
float i=9/12;
const int n=36;
pay=pmt;
bal_k=pay*(1-((1+i)^(k-n))/i)
}
When I compile, the compiler says that because the left hand operator of the "bal_k" expression is of type float that it is illegal. I tried forcing the expression "i" to type int but it becomes zero and then there is a divide by zero error. How can I get around this?
|
|
|
|
|
actually, your problem is that the "^" is the XOR operator in C++. You will need to use the pow() function in <math.h> in order to do exponents.
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
How do I get the directory that the main exe of my app is in? I know it's probably pretty simple, but I couldn't find anything looking through the help index
|
|
|
|
|
|
|
Also try looking up GetCurrentDirectory in the MSDN help file.
|
|
|
|
|
any body could tell the correct perameters of logonuser function?
i am having a simple network of two computers and no domain i simple need passworad and user name to enter.
My service is running on one computer where i want to login and i want to login to the system using logonuser api or function but i could not successed yet.
plz tell mee correct parameters of it?
BOOL LogonUser(
LPTSTR lpszUsername,
LPTSTR lpszDomain,
LPTSTR lpszPassword,
DWORD dwLogonType,
DWORD dwLogonProvider,
PHANDLE phToken
);
r00d0034@yahoo.com
|
|
|
|
|
Notice this: The LogonUser function attempts to log a user on to the local computer. (LogonUser[^])
If you're trying to do that over the network, it won't work.
You could use OpenSCManager()[^] to open the SCM on the remote machine, then use the other Service Functions[^] to do things with the services on that machine.
|
|
|
|
|
Some years ago I made this sample program:
main (int argc, char **argv)<br />
{<br />
BOOL Successful;<br />
HANDLE AccessToken;<br />
DWORD ErrorCode;<br />
char *BufferPtr;<br />
<br />
Successful = LogonUser (argv[1], ".", argv[2], LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &AccessToken);<br />
printf ("LogonUser -> %d\n", Successful);<br />
if (!Successful)<br />
{<br />
ErrorCode = GetLastError();<br />
printf ("GetLastError -> %d\n",ErrorCode);<br />
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, ErrorCode,<br />
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &BufferPtr, 0, NULL );<br />
printf ("Error String -> %s\n",BufferPtr);<br />
free (BufferPtr);<br />
}<br />
}
However, you should have a certain privilege before you can do this (I can't remember anymore which one it was). Othwerwise you get the following error:
LogonUser -> 0<br />
GetLastError -> 1314<br />
Error String -> A required privilege is not held by the client.
Hope this helps.
Enjoy life, this is not a rehearsal !!!
|
|
|
|
|
1) What is the result of GetLastError()?
2) What OS version, SP you are using?
The most common mistake using LogonUser() is that it needs SE_TCB_PRIVILEGE on pre-XP systems. This privilege is (and should be!) granted only to the SYSTEM account, which means that actually only service processes are able to perform a LogonUser()
--
Daniel Lohmann
http://www.losoft.de
(Hey, this page is worth looking! You can find some free and handy NT tools there )
|
|
|
|
|
You learn something every day. I didn't realize that XP removed the SE_TCBNAME privilege requirement from LogonUser.
--------
There are 10 types of people in this world. Those who know binary and those who don't.
|
|
|
|
|
I have made an application using Dialog Boxes. I want to add a printing feature to print the whole Dialog Box.
Can u help me in this?
help me ,please
|
|
|
|
|
Check out WM_PRINT - you can use it to draw onto a printer DC.
Shog9
------
The Army's on Ecstasy, so they say -
I read all about it in USA Today.
They stepped up urine testing to make it go away,
'cause it's hard to kill the enemy on ol' MDMA...- Oysterhead
|
|
|
|
|
But my dialog's items not be drawed in OnPaint().
I use :
dc.BitBlt(0,0,100,100,GetWindowDC(),0,0,SRCCOPY);
it can not work successfully.
dc is the printer's dc here.
can u tell me the code,please!
|
|
|
|