Click here to Skip to main content
15,902,938 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: non-const static member variale initialization Pin
Matthew Faithfull7-Feb-08 22:13
Matthew Faithfull7-Feb-08 22:13 
GeneralRe: non-const static member variale initialization Pin
George_George8-Feb-08 1:49
George_George8-Feb-08 1:49 
GeneralRe: non-const static member variale initialization Pin
Matthew Faithfull8-Feb-08 2:29
Matthew Faithfull8-Feb-08 2:29 
GeneralRe: non-const static member variale initialization Pin
led mike8-Feb-08 4:17
led mike8-Feb-08 4:17 
GeneralRe: non-const static member variale initialization Pin
Matthew Faithfull8-Feb-08 6:05
Matthew Faithfull8-Feb-08 6:05 
GeneralRe: non-const static member variale initialization Pin
led mike8-Feb-08 7:22
led mike8-Feb-08 7:22 
GeneralRe: non-const static member variale initialization Pin
George_George8-Feb-08 21:28
George_George8-Feb-08 21:28 
GeneralRe: non-const static member variale initialization Pin
BadKarma7-Feb-08 22:37
BadKarma7-Feb-08 22:37 
Hi,

The 2005 compiler alsoo treats this as an error.

Now the why (Found this on the Net[^]):
"If a static data member is of const integral or const enumeration type, its
declaration in the class definition can specify a constant-initializer which
shall be an integral constant expression. In that case, the member can
appear in integral constant expressions within its scope. The member shall
still be defined in a namespace scope if it is used in the program and the
namespace scope definition shall not contain an initializer."

So the only relaxation is that for static const integral/enum types you can
get away with the definition if you don't use them in their program i.e.
don't treat them as l-values. The key point you are missing is that the
member can still appear in integral constant expressions (like case label).
So this clause is just a relaxation applicable only with integral constant
expressions.


I think the next sample while explain it more:
class MaxBuffer
{
public:
 const static int Max = 80;

 int m_iBuffer[Max];
};

class ErrorBuffer
{
public:
 static int Max;     // this can be changed later

 int m_iBuffer[Max]; // Gives an error, needs a constant
};


codito ergo sum

GeneralRe: non-const static member variale initialization Pin
George_George8-Feb-08 1:58
George_George8-Feb-08 1:58 
GeneralRe: non-const static member variale initialization Pin
BadKarma8-Feb-08 2:30
BadKarma8-Feb-08 2:30 
GeneralRe: non-const static member variale initialization Pin
George_George8-Feb-08 21:33
George_George8-Feb-08 21:33 
GeneralCOM class registration failed. Pin
Royaltvk7-Feb-08 20:09
Royaltvk7-Feb-08 20:09 
GeneralRe: COM class registration failed. Pin
CPallini7-Feb-08 23:13
mveCPallini7-Feb-08 23:13 
GeneralRe: COM class registration failed. Pin
Royaltvk8-Feb-08 0:28
Royaltvk8-Feb-08 0:28 
GeneralRe: COM class registration failed. Pin
Rajkumar R8-Feb-08 0:50
Rajkumar R8-Feb-08 0:50 
GeneralRe: COM class registration failed. Pin
Iain Clarke, Warrior Programmer8-Feb-08 1:28
Iain Clarke, Warrior Programmer8-Feb-08 1:28 
GeneralRe: COM class registration failed. Pin
Rajkumar R8-Feb-08 2:01
Rajkumar R8-Feb-08 2:01 
Generaleditbox display problem Pin
Chandrasekharan P7-Feb-08 19:24
Chandrasekharan P7-Feb-08 19:24 
QuestionRe: editbox display problem Pin
Rajesh R Subramanian7-Feb-08 20:14
professionalRajesh R Subramanian7-Feb-08 20:14 
GeneralRe: editbox display problem Pin
Chandrasekharan P7-Feb-08 20:59
Chandrasekharan P7-Feb-08 20:59 
GeneralRe: editbox display problem Pin
Chandrasekharan P7-Feb-08 21:11
Chandrasekharan P7-Feb-08 21:11 
GeneralRe: editbox display problem Pin
Hamid_RT10-Feb-08 21:35
Hamid_RT10-Feb-08 21:35 
QuestionCreating SQL Database .mdf file using MFC , VC++ ? Pin
nitin_pro7-Feb-08 19:09
nitin_pro7-Feb-08 19:09 
AnswerRe: Creating SQL Database .mdf file using MFC , VC++ ? Pin
BadKarma8-Feb-08 0:04
BadKarma8-Feb-08 0:04 
GeneralRe: Creating SQL Database .mdf file using MFC , VC++ ? Pin
nitin_pro8-Feb-08 0:21
nitin_pro8-Feb-08 0:21 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.