我上网上查了一个利用静态变量的做法,其中有一步是在公用类中定义全局变量和全局函数,均使用static修饰,静态变量还必须在类外定义和初始化
class CPublic //(头文件)
{
public:
CPublic();
virtual CPublic();
public: static int x;
static int time;
static int f(int y);
}
添加进去总是报错,请问下各位高手怎么回事,我确实有引用过#“Public.h”另外这个头文件是放在什么地方的
使用静态变量来实现全局变量,在MFC程序中是很不合适的做法。而且静态变量占用程序堆内存,比较浪费。
你的错误在于,在CPublic这个类里面声明静态变量,必须在同一个同文件中进行初始化。以提问中代码为例,需要在类声明之后加上:
int CPublic::x = 0;
int CPublic::time = 0;
静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员(这点非常重要)。
MFC中实现一个变量或者函数可以全局使用非常简单,因为APP类是一个全局类,任何APP类里面声明的函数或者变量,都可以在框架内通过AfxGetApp()-> 这个方法来访问。
你的意思是这样吗
#include "stdafx.h"
:
:
extern CString a;
#endif
但是这样连最简单的赋值都会报错
a = "1";