c++的问题-C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过

问题描述

C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过

class GradeBook
{
public:
//constant -- number of students who took the test
const static int students = 0;

//constructor initialize course name and array of grades
GradeBook( string, const int [] );

void setCourseName( string );       //function to set the course name
string getCourseName();             //function to get the course name
void displayMessage();              //display a welcome message
void processGrades();               //perform various operations on the grade data
int getMinimum();                   //find the minimum grade for the test
int getMaximum();                   //find the maximum grade for the test
double getAverage();                //determine the average grade for the test
void outputBarChart();              //output bar chart of grade distribution
void outputGrades();                    //output the contents of the grades array

private:
string courseName; // course name for this grade book
int grades[ 10 ]; // array of student grades

};

显示students变量无法编译通过
错误代码 error C2252: 'students' : pure specifier can only be specified for functions
求大神解答,很多书上都这么写的

解决方案

VC6.0不允许在类内初始化static const成员变量,你要在外面初始化:
const int GradeBook::students = 0;
这是VC6.0的bug吧,据说是VC6.0的协议太落后了,换个编译环境就不用这样了。

时间: 2016-08-16

c++的问题-C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过的相关文章

c语言-关于调用别的源文件中定义的函数或变量的问题

问题描述 关于调用别的源文件中定义的函数或变量的问题 在A.c中定义了char c这个变量,如果在B.c中要调用这个变量,要在B.c或B.h中调价extern char c是吧,我看到别的程序猿一般的做法是定义了变量或函数以后,都把他们在对应的头文件中声明一下,如果有其他文件要调用,直接添加这个文件的头文件即可,如果A.c中想用char c,加extern可以吗(这样的话char c要在头文件中定义了,一般调用变量的不多吧,) 解决方案 extern就可以了.但是要定义成全局变量,不能是函数内的

java代码-java初学者提问 在类中 用static成员变量实例化自身类 程序的执行顺序过程是怎样的?

问题描述 java初学者提问 在类中 用static成员变量实例化自身类 程序的执行顺序过程是怎样的? class Demo03 { public static void main(String[] args) { A.show(); } } class A { //构造方法 A(){ System.out.println("构造方法执行"); System.out.println(b); System.out.println(c); } static A a=new A(); sta

如何把一个头文件中定义的结构体用到另一个头文件中,另一个头文件中定义的结构体又用到改头文件中?

问题描述 如何把一个头文件中定义的结构体用到另一个头文件中,另一个头文件中定义的结构体又用到改头文件中? //栈的头文件声明 #include #include #include "Tree" #ifndef STACK_H #define STACK_H typedef union typelemt{ char ch; Tree t; }typelemt; typedef struct stack{ typelemt* type_stack; int max; }stack; typ

java-在本类中调用自己的成员变量时,变量前也要加this是为什么,其作用是什么

问题描述 在本类中调用自己的成员变量时,变量前也要加this是为什么,其作用是什么 java在本类中使用this指针的作用,感觉加不加this指针运行结果都一样啊,这是怎么回事(在学习写坦克大战项目时,突然想到的问题,求大神教一教) 解决方案 一般来说,this可以省略.可写可不写 有种情况例外: 构造函数 class A { public int x; public A(int x) { this.x = x; //这里为了区分两个都叫x的变量,就要写 } } 解决方案二: 其实也不仅构造函数

javaee-java中构造块和成员变量的执行顺序是依据什么机制?

问题描述 java中构造块和成员变量的执行顺序是依据什么机制? 代码的执行不是应该和写的顺序无关吗 但是为什么构造块和成员变量的顺序不一样,执行的结果也不一样呢??? 求大神解答 解决方案 你的理解是有误的,成员变量的初始化值跟代码顺序有一定关系的.java创建对象时,对实例变量即类的非静态成员的初始化,主要在三个地方 1 成员变量定义时指定初始值 2 非静态代码块中指定初始值 3 构造函数中对成员变量指定初值值 这三种方式1,2执行先于构造函数3的执行,但是1,2方式的执行顺序与源程序中的排列

水晶报表在VC++6.0中的简单使用方法

水晶报表是一个报表设计开发的强大工具,功能强大,设计灵活,在水晶报表光盘中只提供了一个完全动态生成报表的例子,使用繁琐.现介绍其在VC++6.0中的简单使用方法.编译环境:VC++6.0 sp5 .Windows 2000 Server sp3 (en).一.导入水晶报表使用的动态联接库:根据实际修改文件路径. #import "C:\Documents and Settings\Administrator\桌面\cr\craxdrt9.dll" no_namespace 二.定义接口

java-Java 中final修饰的成员变量在创建对象时候会不会被附初值?

问题描述 Java 中final修饰的成员变量在创建对象时候会不会被附初值? 如上所述 Java 中final修饰的成员变量在创建对象时候会不会被附初值? 我看周志明的jvm说在创建对象时候要给所有的内存空间都要初始化为零值(不包括对象头),我就想如果是final类型的会不会被初始化微零值再进行程序员自己编写的赋值语句呢?那样的话是不是就是两次对final变量赋值了? 解决方案 不会自动赋值.不赋值会报错.final修饰成员变量,会强制要求赋上值. 解决方案二: 会,比如int初值就是0 解决方

java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

/* 样例1:   class Parent{      int num = 3;   }     class Child extends Parent{      int num = 4;   } */   /* 样例2: class Parent{   }   class Child extends Parent{     int num = 4; } */   /* 样例3: class Parent{     void show(){         System.out.println

private-两个类互相是对方的成员变量指针

问题描述 两个类互相是对方的成员变量指针 比如有A,B两个类: class A { public: A(); ~A{}; private: B *b; }: class B { public: B(); ~A{}; private: A *a; }: 这代表什么意思,用什么特殊的含义么? 解决方案 这很正常,比如双向链表中相邻的两个节点就互相包含对方的指针. 解决方案二: B类的析构函数写错误了,笔误,不影响我要问的问题 解决方案三: 就是两个结构互相引用,通常用在1:1映射的场景,但也不绝对.