|
This code (all in one file) compiles fine (with g++, but msvc will compile it as well) for me. There must be something else stopping B seeing A.
class A
{
public:
A() {}
~A() {}
};
class B
{
public:
B() {}
~B() {}
A foo;
};
One thing you could try is just running the code through the pre-processor (cl -E, if I remember rightly) to see what the compiler really sees.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hm, running it through the pre-processor didn't really do much, since i'm pretty new to C++.
All the headers are linked though. The header file which requires class 'A' has the inclusion for class A in the header.
To be honest, I don't understand how it wouldn't be linking them together, they're all connected and 'class A' is definately being declared in (eg) 'A.h'. 'B.h' then includes 'A.h', and then requires 'A Foo' further down in the code.
There are appropriate .cpp files that are also used with the initializers etc. and i've included both 'A.h' *and* 'B.h' in both of those files.
It's just refusing to recognise 'class A' as any type of identifier, yet if I hover over the keyword 'A', it tells me that it's a class etc.
|
|
|
|
|
Can you post the content of a.h, b.h?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Well, i've found a sort-of solution now. I'm currently declaring "class A;" after the "B.h" inclusion, but i'm going to run through my headers and make sure they're not getting mixed up. It might be that they're linked incorrectly (even if they're linked in the files that need them).
|
|
|
|
|
Having a forward declaration for A (that's the 'class A;') shouldn't help in the definition of B - B would need to see the full definition of A to have a member of type A.
Oh well. If you've got it to work...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
My thoughts exactly. However, I placed #ifndef _SOCKETS_OBJ_DECLARED_ around the 'class A;', and in the 'B.h' at the end, I added #define _SOCKETS_OBJ_DECLARED_
Then, when I placed an #error "Undeclared" in the #ifndef, it threw the error.. so for some reason, the header is being included but it's not globally declaring the 'class B'. It's really strange, and another programmer said he couldn't explain it.
The best I can do is go through it with a fine toothcomb and hopefully find where it's not declaring properly.
|
|
|
|
|
I wonder if you've just got a missing semi-colon or something somewhere - that can cause really bizarre error messages and can be really hard to spot.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I have no idea. I've been rooting through these header files, and as far as I can tell there are no missing semi-colons.
In Visual C++, the actual region inside #ifndef _PACKETS_OBJ_DECLARED_ is completely grayed out, suggesting it should never be called, however it *is* being called, which might be something to do at compilation time.
This has absolutely lost me, lol.
|
|
|
|
|
I am currently writing an application using MFC and C++. I am also using Visual Studio 2008. I have concerns that it is leaking memory and/or has array out of bounds issues. I am thinking about buying Purify to verify this and find these bugs. However, its cost is over 800 dollars which is not in my budget.
I am hoping that somebody out there can recommend another tool which is just as good but has a lower price. One such tool is MPatrol but I have never used it and I am wondering who has and what they think of it.
Thanks
Bob
|
|
|
|
|
BobInNJ wrote: I am currently writing an application using MFC and C++. I am also using Visual Studio 2008. I have concerns that it is leaking memory...
Are you using new and delete ?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
David,
I am using new and delete.
Bob
|
|
|
|
|
Then you should be able to detect most, if not all, memory leaks. Run the application using F5, and when it shuts down, MFC will report what wasn't freed in one of the output windows.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
David,
Thanks for the response. When I do that there are no memory leaks reported MFC or Visual Studio. I am thinking that it might be the case that I am freeing memory not allocated or allocating x bytes and using more than x bytes. Not sure.
Bob
|
|
|
|
|
Bob,
Have you tried DEBUG_NEW[^]?
Yusuf
Oh didn't you notice, analogous to square roots, they recently introduced rectangular, circular, and diamond roots to determine the size of the corresponding shapes when given the area. Luc Pattyn[^]
|
|
|
|
|
Hi
I have a third party process that modifies the selected text in the currently focussed application window when a hotkey is pressed (e.g. you select text in your text editor, the process wakes up and shows the modified text in a pop-up window and pastes it to the clipboard). I want to trigger this process from an MFC application. I would have a text window in a dialog box to which I would write text programmatically, then I would send the hotkey event and then finally I would get the modified text from the clipboard.
How can I trigger the hotkey event programmatically? (I know how to send key events to programs but I guess hotkeys are registered in Windows and need different handling).
David
|
|
|
|
|
hi,
May i know what is the better book to start with vc++ and MFC...as i have less time to start working on MFC in my company...
|
|
|
|
|
In my experience, just about any introductory book, save those written by Petzold, are good for learning MFC. Once you get the basics, though, I find most books beyond useless.
Having said that, my favorite book is out of print and I don't remember the name, but it started with explaining HOW MFC worked to people who already understood Windows. I then spent time writing small apps and stepping through the MFC code to fully understand what it was doing. Again, though, I'd been programming windows since 3.0 was released and had become quite an expert at it.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
Have a look at the MFC section of this article [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
In the days when we used MFC, we'd books by Jeff Prosise and Mike Blaszczak. They are great authors
Yusuf
Oh didn't you notice, analogous to square roots, they recently introduced rectangular, circular, and diamond roots to determine the size of the corresponding shapes when given the area. Luc Pattyn[^]
|
|
|
|
|
www.functionx.com[^] is good.
Of one Essence is the human race
thus has Creation put the base
One Limb impacted is sufficient
For all Others to feel the Mace
(Saadi )
|
|
|
|
|
Hi there.
I want to learn Multithreading programming in C++, Can some one please suggest good articles for the same.
Just FYI, I am well versed with VC++ but want to use only C++ for a specific purpose.
Thanks
PanB
|
|
|
|
|
http://www.devarticles.com/c/a/Cplusplus/Multithreading-in-C/
http://msdn.microsoft.com/en-us/library/975t8ks0(VS.80).aspx
akt
|
|
|
|
|
you can learn linux. it is a good way.
|
|
|
|
|
PankajB wrote: Can some one please suggest good articles for the same.
See here and here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|