|
A function member of a class doesn't have the same prototype as a global function: there is the 'this' paramter that is passed as an implicit argument of the function (but it is transparent to the user). To avoid that, you can declare your member function as static. A static function is shared aming all instances of your class and thus doesn't require the implicit 'this' parameter. But of course, within a static function, you can only access static member of your class (because the function does not belong to a specific instance of the class).
|
|
|
|
|
|
within a static function, you can only access static member of your class (because the function does not belong to a specific instance of the class).
Unless you also pass a pointer to the object into the functiona as an additional argument, then you can access public members and functions of the class using the pointer to the class.
Marriage slows down your coding, a baby slows it down even more!
|
|
|
|
|
Hi,
You can alsoo change AFunction to
void AFunction(void(CAClass::*pFunction)())
{
} this way you can pass a pointer to a member function.
This said you will need to have an object of the type CAClass available to execute the function.
codito ergo sum
|
|
|
|
|
|
i use this macro:
#define CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember)(int))
typedef void (CObjType::*fnType)(int);
...
fnType m_fnPtr;
...
CALL_MEMBER_FN(*this, fnPtr)(5);
Cleek | Image Toolkits | Thumbnail maker
-- modified at 11:44 Thursday 12th January, 2006
|
|
|
|
|
1. I tried to use a global variable in every c++ file with the same name that is szRegPath (a CString). But I got some error and I had to use either different variable names in all the files (if global) or i had to put those inside functions. How can I resolve this?
2. I want to have one int variable which is global to all the c++ files and that should maintain its value state. If one file modifies the value to 7, then when it is called by another file, it should have its value as 7.
Please help me
Aljechin Alexander
|
|
|
|
|
Aljechin wrote: I want to have one int variable which is global to all the c++ files
You would therefore need to declare your variable in a file that is visible to all your cpp files. I would suggest declaring it in your stdafx.h file, if using a standard mfc built application.
I Dream of Absolute Zero
|
|
|
|
|
Not just declaring. I need the variable to maintain its state throught the c++ files. How do i achieve this?
Thanks
|
|
|
|
|
If you want those variables in different *.cpp files to be actually different variables and still compile, declare them as static (local to a particular *.cpp).
If, on the other hand, you need one variable to be global and available in several (or all) *.cpp files, do the following:
1) in some header: extern int myvar;
2) in any *.cpp: int myvar;
3) in every *.cpp where you need to use myvar: #include "that_header's_name.h"
|
|
|
|
|
HAND wrote: 1) in some header: extern int myvar;
2) in any *.cpp: int myvar;
3) in every *.cpp where you need to use myvar: #include "that_header's_name.h"
But this will become a local variable for every c++ file. I dont want that. I want a global variable with its state maintained throught all c++ files. How can I achieve this?
|
|
|
|
|
Aljechin wrote: But this will become a local variable for every c++ file.
No, it won't.
Regards,
Nish
|
|
|
|
|
|
its a bit off topic, but consider this :
global variables are quite a bad habit to take, and should be used only when other cases can't work.
could you please explain a bit why you need so ?
about your variables naming, it is quite incorrect.
sz is used for the C-Style strings, which are char arrays with a trailing null character.
if you are using CString, preceed the variable name with str instead :
char* pszFoo = "C-Style Hello";
CString strFoo = "CString Hello";
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VisualCalc 3.0]
-- modified at 6:08 Thursday 12th January, 2006
|
|
|
|
|
My application stores its installation path and various information in registry key. But it will be enough for me to find it once, that is at the application startup, in InitInstance() Later I will put this value in one variable and want to call it from various places depending on user's action, and certain events. Now what I do is I am reading that registry path every where throught the program (whenever the value is required)
I thought it would be a nice idea to have stored it in a global variable which would be accessible by all the c++ files.
Thanks for your explanation about naming conventions. I will certainly follow those.
Thanks and Regards,
Aljechin Alexander
|
|
|
|
|
when creating your application object, you could pass those datas as parameters to the constructor, couldn't you ?
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VisualCalc 3.0]
|
|
|
|
|
Can you please tell how to do that? I do not know this. Can you show a small code snippet example? The information will be trivially helpful for me.
Thanks and Regards,
Aljechin Alexander
|
|
|
|
|
well, i think you application is a class, so it might have a constructor, and as a constructor is a function, you can pass parameters to it.
something like this:
InitInstance() {
MyApplication app(params);
}
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VisualCalc 3.0]
|
|
|
|
|
Hi I am using MSchart control in vc.net...
my program goes like this...
double ChartArray __nogc[50][2];
{
......
ChartArray[k][1]= k;
ChartArray[k][2]=mse;
......
}
axMSChart1->set_ChartData(System::Convert::ToString(ChartArray));
//axMSChart1->ChartData = System::Convert::ToString(ChartArray);
when i assign the array to Chartdata, i encountered an error
"An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in axinterop.mschart20lib.dll
Additional information: Bad function argument"
Could anyone solve this problem
Thanks in advance
Salai
|
|
|
|
|
i dont know much about VC.NET but does System::Convert::ToString(ChartArray) return a array ?!?
-Prakash
|
|
|
|
|
I am working on an embedded device which
communicates with the computer with the help
of TCP/IP protocol.A TCP stack is embedded the device .
I want to send an ACK message from my application
to the device do u know anysuch example or so .
ACK is the low-level message send by TCP for acknoleging
the frame send by other device
Vikas Amin
Embin Technology
Bombay
|
|
|
|
|
why do you want to do that ?
the ACK is send by the protocol stack, if the protocol stack is not sending the ACK for some reason then that must be a bug in the stack.
-Prakash
|
|
|
|
|
that is for the reason
that my embedded device needs
that ack to move out of the loop.
its stack work in that fashon .
due to some reason the ack do not reach him
so i want to do that manually .
(Anyway we have to learn what going below the layers)
Vikas Amin
Embin Technology
Bombay
|
|
|
|
|
ok,
is the embedded code written by u? if yes, can you post that loop here?
-Prakash
|
|
|
|
|
Sorry prakash i have not written
the stack , its done by company &
its too big to understand .
Vikas Amin
Embin Technology
Bombay
|
|
|
|