|
Maybe the compiler is trying to allocate memory for i[s] before it reachs the const a::s=20; line, causing an error because s would equal 0.
Hope this helps
- X
|
|
|
|
|
- Thanks pal!
- Your reply helps a lot. I still have a question. Another pal says, "the variable is a constant the compiler knows the value at compile time". I do not know what is meaning.
- Can you help?
- Regards,
Maer
|
|
|
|
|
I know constants in VB are known at compile time, but these are equivalent to #define's in VC. The const keyword means that the variable cannot be altered during the execution of the program.
- X
|
|
|
|
|
- Thanks pal!
- Your reply helps a lot. I still have a question.
- Can "const" and "static" use together? (Like, const static int s=10; )
- Can you help?
- Have a nice weekend,
Maer
|
|
|
|
|
Hello
I tried the following code using GNU C++ compiler on Linux [Debian 2.2]
It compiled and ran fine
#include "iostream.h"
class a{
public:
static const int s ;
int i[s];
};
const int a::s=20;
void main()
{
cout<<sizeof(int);
cout <<"\r\n";
cout<<sizeof(a);
cout <<"\r\n";
cout<<a::s;
cout <<"\r\n";
}
Sonork ID 100.9786 voidmain
|
|
|
|
|
- Thanks pal!
- Have you tried with VC++ 6.0? It do have problems.
- Can you help?
- Regards,
Maer
|
|
|
|
|
You have used integer array as an data member in the class.Memory is allocated to the array at compile time itself.So arrays always want constant expression.So it gives an error.
Hope this helps....
|
|
|
|
|
Since the variable is a constant the compiler knows the value at compile time. Therefore it's ok to use a const variable to declare a non-dynamic array. Anyway, here is what you can do...
#include "iostream.h"
class ClassA
{
private:
const static enum { s = 20 };
int i[s];
public:
int Func(int n);
static int StaticFunc(int n);
};
int ClassA::Func(int n)
{
return ClassA::s + n;
}
int ClassA::StaticFunc(int n)
{
return ClassA::s + n;
}
void main()
{
cout << sizeof(int) << endl;
cout << sizeof(ClassA) << endl;
cout << ClassA::StaticFunc(1) << endl;
ClassA a;
cout << a.Func(2) << endl;
}
It's not necessary to specify ClassA:: before the variable name (s) in the class member functions, but I like it this way
Sprudling
|
|
|
|
|
- Thanks pal!
- Your reply helps a lot. I still have a question. What means "variable is a constant the compiler knows the value at compile time" in your reply?
- Can you show me an example?
- Regards,
Maer
|
|
|
|
|
Actually memory for the array isn't allocated at all since the class is never instanciated.
But the forward reference for the value of s does make it impossible for the compiler to lay out the class structure fully until the reference is satisfied. It's just being a lazy compiler.
|
|
|
|
|
- Thanks pal!
- Your reply helps a lot. I still have a question. Another pal says, "the variable is a constant the compiler knows the value at compile time". I do not know what is meaning.
- Can you help?
- Regards,
Maer
|
|
|
|
|
- Thanks pal!
- But I think the error occurs with the statement "const int a:: s=20; "
- Do you agree with me?
- Can you help?
- Regards,
Maer
|
|
|
|
|
Anyone know how I can find what the size of the current cursor is?
Thanks
Jeremy Davis
http://www.astad.org
|
|
|
|
|
use GetSystemMetrics with SM_CXCURSOR,SM_CYCURSOR
Nish
Sonork ID 100.9786 voidmain
|
|
|
|
|
It is possible to export functions from an exe, to be used by another process, so that the exe functions a bit like a DLL? I want one file which can be run directly and also used from another applciation. Is this possible?
Sorry to dissapoint you all with my lack of a witty or poignant signature.
|
|
|
|
|
COM is the standard way to achieve this.
Michael
|
|
|
|
|
LoadLibrary does load exes according to MSDN, but they only describe it for loading resources. But I guess you should be able to use GetProcAddress for an exported func.
But I think a better design would be to put your functions in an ordinary DLL and then write a small app that loads the dll for your stand-alone case.
Cheers
Steen.
"To claim that computer games influence children is rediculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
How can I determine the Computername where my app is located.
Note: The Computername where the app is located is not the same where the app is executed -> Networkresource !
|
|
|
|
|
not sure if this will be useful
but take a look at WNetEnumResource and WNetGetNetworkInformation
Nish
Sonork ID 100.9786 voidmain
|
|
|
|
|
This works for me...
CString GetMachineName()
{
DWORD dwsize = MAX_COMPUTERNAME_LENGTH + 1 ;
char name[MAX_COMPUTERNAME_LENGTH + 1 ];
if (!::GetComputerName(&name[0], &dwsize))
throw E_FAIL;
}
CString strName(name);
return strName;
}
Hope this helps,
Bill
|
|
|
|
|
If this isn't a beginner's question I don't know what.
My problem is that when I start a new project "Win32 static library" with precompiled header and MFC support I can't add MFC classes to it. I can't even start the classwizard.
Shouldn't the classwizard work for static libraries? When right-clicking on my project and selecting "New class..." my only option is to add a generic class.
Someone please tell me what I'm missing / doing wrong.
Thanks!
|
|
|
|
|
If I recall correctly class wizard only works for MFC Applications and MFC extension dlls. Any other type of project requires the manual creation of MFC derivied classes. The MFC support just adds the afx includes to the stdafx.h
What kind of dervived MFC classes are you trying to create?
Michael
|
|
|
|
|
Ok, I guess you're right. If I try to create a win32 console application with MFC support it works all right.
I was planning to create a couple of CRecordset-derived classes. I'll see if I can do it manually.
Thanks for your help.
|
|
|
|
|
..Am having problems with
this piece of code ...Will be grateful if you help
.
trying to take a path into a crgn object ...
tried both createfrompath() and pathtoregion()
but the CRgn object is null ..
do help
/////////////*********************
COLORREF ref= RGB(255,0 , 0 );
CPen lpen (PS_SOLID,m_wdWidth,ref);
CPen* pOldPen = pDC->SelectObject (&lpen);
// CHairPackView *hView =(CHairPackView*)
GetHandle ();
CRgn Extract ;
HRGN hExtract ;
HDC hDevice ;
hDevice =pDC->GetSafeHdc();
//Method 1
BeginPath(hDevice);
pDC->MoveTo (m_ptFrom);
pDC->LineTo (m_ptTo);
CloseFigure( hDevice ) ;
EndPath(hDevice);
StrokePath ( hDevice ) ;
// */
// Method 2
pDC->BeginPath();
pDC->MoveTo (m_ptFrom);
pDC->LineTo (m_ptTo);
pDC->CloseFigure();
pDC->EndPath();
pDC->StrokePath();
Extract.CreateFromPath (pDC );
////null value for Extract
// hExtract =PathToRegion( hDevice );
pDC->SelectObject (pOldPen);
morphius_902
|
|
|
|
|
I'm having a bit of a chat with an AV chap, and we came around to talking about what is executable, and what isn't. Can you Execute a dll or not, I remeber reading something in MSDN about it, but can't remember the details, Can anyone clarify this !
(No we aren't arguing we are discussing)
Regardz
Colin J Davies
Sonork ID 100.9197:Colin
Bring back the EMBED tag
|
|
|
|