|
...and by the way, the derived class doesn't HAVE to override a virtual method in the base, its optional, you only HAVE to override pure virtuals.
|
|
|
|
|
See my answer below: you can still call methods from the base class(es) even if the pointer you use to call it points to a class that has overridden that implementation:
CBase* pbase = new CBase;
CDerived* pDerived = new CDerived;
pbase->testApp();
pDerived->testApp();
pDerived->CBase::testApp();
You can invoke methods of base classes by adding the name of that class, separated by '::' to the name of the function you want to call. In doing so you ignore the virtual function table for that call only. You can freely mix calls of that type with normal calls that use the virtual functions, as you can see in the example above.
|
|
|
|
|
This should do it. Although I'm not at all sure why you'd want that.
int _tmain(int argc, _TCHAR* argv[])
{
CBase* cp = new CDerived();
cp->CBase::testApp();
return 0;
}
|
|
|
|
|
because the intellisense hides this from me.
|
|
|
|
|
this isn't what you'd call normal use...
|
|
|
|
|
It is ok using debug, and run new byte for 59 time ok for release, but the 60th, it faluts showing not enought memory, but I print the value that will be new is 2544
Like this:
void MallocSize(int iMalSize)
{
....
pData = new BYTE[iMalSize];
....
}
void AddFeature()
{
....
for(int i=0; i<3000; i++)
MallocSize(Sizet);
....
}
I try many time but each stop at the 60th, and the value is 2544 Byte
Runtime Lib:Multi-threaded DLL (/MD)
Used memory is 1.02G
and the program is 200MB
Total system memory is 2GB.
Does anyone know what is the problem?
|
|
|
|
|
You are allocating SizeT bytes of memory 3000 times, correct? So what is the value of Sizet ?
"One man's wage rise is another man's price increase." - Harold Wilson
"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
"Some people are making such thorough preparation for rainy days that they aren't enjoying today's sunshine." - William Feather
|
|
|
|
|
good question...
|
|
|
|
|
The problem is that while the debug version stores additional information for each allocation, the release version does not. So if you did not free all the memory that you allocated, then in the debug version, the (invisible) debug code will be able to free the memory that you forgot to clean up yourself. But the release version, lacking that additional information, is unable to do that by itself. This leaves you with memory leaks. Obviously these leaks are big enough that after 59 runs you've used up all your memory.
Fix: properly free the memory that you allocate when you don't need it any more!
|
|
|
|
|
Hi all,
i m using a Edit box control with multiple line option.
and calculate the text length of edit box,here when press enter in edit box for new line the charcter length of enter key is 2.
please tell me how can i chek this and consider it as 1 char instead of 2.
thanks in advance.
|
|
|
|
|
Windows uses \r\n as a combination to get a carriage return and a line feed. You have to build your software to take that into account.
Edit: Why do you want to consider it as one char?
|
|
|
|
|
Please tell me how can i do this?
|
|
|
|
|
If you let us know exactly what you want to achieve I'm sure I or someone else could help you. Why is it important to treat it as one single char?
|
|
|
|
|
just bcoz of this enter the length of string change from the original string.
and encounter the problem in sent and received char count when i m using this string to send sms.
|
|
|
|
|
Ok, you will have to translate the text yourself, replacing \r\n with \n. If you use MFC or ATL CString::Replace()[^] will do just fine.
|
|
|
|
|
Hi!
I've to show a confirmation Message Box(with Yes and No Buttons), on closing a Modeless Dialog. How to do this?
|
|
|
|
|
Checkout this article[^] and AfxMessageBox() on MSDN.
The best things in life are not things.
|
|
|
|
|
If you are using MFC then add handlers for the OK and/or Cancel buttons (OnOK, OnCancel) and use AfxMessageBox to query the user, if the user wishes to close the dialog, call the super method, if not, then don't.
E.g:
void CMyDialog::OnCancel()
{
if (AfxMessageBox(_T("Are you completely and absolutely super-sure you wish to close this great dialog?", MB_YESNO | MB_ICONQUESTION) == IDYES) __super::OnCancel();
}
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> //TODO: Implement signature here<
|
|
|
|
|
Code-o-mat wrote: void CMyDialog::OnCancel()
{
if (AfxMessageBox(_T("Are you completely and absolutely super-sure you wish to close this great dialog?", MB_YESNO | MB_ICONQUESTION) == IDYES) __super::OnCancel();
}
This works well. But my Project Name is coming on the caption of the Message Box. How to customize this caption?
|
|
|
|
|
Use MessageBox[^] instead of AfxMessageBox:
void CMyDialog::OnCancel()
{
if (MessageBox(m_hWnd, _T("Are you completely and absolutely super-sure you wish to close this great dialog?"), _T("The Question"), MB_YESNO | MB_ICONQUESTION) == IDYES) __super::OnCancel();
}
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> //TODO: Implement signature here<
|
|
|
|
|
pix_programmer wrote: How to customize this caption?
Try reading the MSDN documentation.
The best things in life are not things.
|
|
|
|
|
Hello
in WM_CLOSE (win32) / OnCancel() (MFC) add your message box. and according to the result returned, you can add your code.
Regards,
A. Gopinath.
|
|
|
|
|
Hmm, am I the only one who considers it weird if an attempt to close a dialog results in opening a dialog?
Sorry, just had to add this
|
|
|
|
|
Hehe, no, but I just saw the irony of it
|
|
|
|
|
i am writing small utility that will save webpage in local disk to view offline.. pls help me
|
|
|
|