|
Duh, careless virtual in a baseclass declaration led to multiple calls to the destructor.
|
|
|
|
|
Using pointers to things as the element type template parameter to STL collections can be somewhat tricky. Is there any reason in particular why you are using a list<broadCaster *> instead of just list<broadCaster> ? With a list of pointers to broadCaster objects, maintaining the lifetime of the objects pointed at by those pointers typically becomes an issue. This is just a general guideline though - depending on your specific requirements it might make sense to do this.
|
|
|
|
|
BTW, Make your destructor virtual. If you're accessing derived class object though base class point and if you delete it, derived class constructor will not be called.
See FAQ[^]
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|
|
Hi
Why I can't see the result of my program (Win32 Console Application)in Vc++8.
for example:
#include <iostream>
using namespace std;
int main()
{
cout << "The First Program - Welcome";
return 0;
}
thank you
soso
|
|
|
|
|
anassamar wrote: Why I can't see the result of my program (Win32 Console Application)in Vc++8.
What do you mean by 'result'?
How have you executed the program?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Because you are running it from within the IDE. You can either call getch() after cout , or run the program from a command prompt.
"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
|
|
|
|
|
|
Hello all,
With C++ I/O functions, I'm trying to read in file contents but search for a particular point in the file. For example:
int main() {
string line;
ifstream inFile;
inFile.open("C:\\LOCATIONOFFILE\\Desktop\\the.msg");
if (!inFile) {
cout << "Unable to open file";
exit(1);
}
if (inFile.is_open())
{
while (! inFile.eof() )
{
getline (inFile,line);
cout << line << endl;
}
inFile.close();
}
return 0;
This reads in the first line of the file.
1. Is there a way to read in a specific line number? Something like getline (inFile,lineNumber100) ?
2. Can I point to a specific position in the line?
3. How can I apply regex to this in order to search entire files for particular strings in a file?
Sorry to be a pain but, if anyone can help...
Thanks
modified on Thursday, March 12, 2009 5:54 PM
|
|
|
|
|
su_penguin wrote: 1. Is there a way to read in a specific line? Something like getline (inFile,lineNumber100) ?
No - lines are all of different lengths.
su_penguin wrote: 2. Can I point to a specific position in the line?
Once you've read it in? Yes- line.begin() + the_position_you_want_remember_its_zero_based
su_penguin wrote: 3. How can I apply regex to this in order to search entire files for particular strings in a file?
Using Boost.Regex[^] or std::tr1::iterator (as included in VS2008), I'd read the file into a string and then use a regex_iterator or regex_token_iterator to search through the string. You can't search through the file directly with regex_iterator or regex_token_iterator because an istream_iterator (the iterator for files) doesn't have the characteristics required for regex iterators.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Stuart Dootson wrote: su_penguin wrote:1. Is there a way to read in a specific line? Something like getline (inFile,lineNumber100) ? No - lines are all of different lengths.
Yes, you can't directly jump to a specific file offset if each line in the file can be of a different length. You could scan for "new line" characters and skip (N - 1) "new lines" where N is the line number that you want to navigate to. But figuring out what exactly is a "new line" can be tricky ("\n" on POSIX, "\r\n" on Windows, "\r" on macs).
|
|
|
|
|
Hey.
I'm trying to store a general, overall class that will store other classes within for a much easier accessible object, however, I keep running into the same problem.
Here's a small example of the code i'm trying to produce:
class A {
public:
A();
~A();
};
class B {
public:
B();
~B();
A Foo;
};
And it keeps throwing the same error at me, that there's an unrecognised identifier before the variable 'Foo', and that default-int isn't supported (obviously).
Class A is in a seperate header file, but i'm including it at the top of the header file for Class B. However, no matter what I try, it refuses to believe that 'class A' exists, and can't reference to it. I've even tried using the typedef keyword to declare 'class A' as an identifier, but even that won't work.
I can't find any results over Google, nor here, about this problem. Can anyone assist?
Thanks in advance.
|
|
|
|
|
the following project
#pragma once
class A {
public:
A();
~A();
};
#pragma once
class B {
public:
B();
~B();
A Foo;
};
#include "A.h"
A::A(){}
A::~A(){}
#include "A.h"
#include "B.h"
B::~B(){}
B::B(){}
#include "A.h"
#include "B.h"
void main()
{
A a;
B b;
}
compiles fine even with VC++ 6.0 .
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]
|
|
|
|
|
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
|
|
|
|