读书人

C++ DLL内存在大局类

发布时间: 2013-12-20 00:23:10 作者: rapoo

C++ DLL内存在全局类
如何在DLL里面 使用一个全局类变量?


MyClass asdasd; 这里出错、不知道为何.求高手指点

代码如下:


#include "stdafx.h"


int aaa =10;
MyClass asdasd; //编译时出错、

class MyClass
{
public:
MyClass();
~MyClass();
int adaad(int a, int b);
int adasad(int a, int b);
private:

};

MyClass::MyClass()
{
MessageBoxA(NULL,"构造函数","提醒",MB_OK);
}

MyClass::~MyClass()
{
MessageBoxA(NULL,"析构函数","提醒",MB_OK);
}

int MyClass::adasad(int a, int b)
{
return a*b;
}


int MyClass::adaad(int a, int b)
{
return a+b;
}


int _stdcall asdasdasdasdasd(int a, int b)
{

MyClass bbb ;//如果直接使用全局的话,直接出错,(存在全局类根本都编译不了)
aaa =111;//全局int变量 可以编译,可以使用

return bbb.adaad(a,b);
}

int _stdcall asdasdasdasdasdasdsadasd(int a, int b)
{

MyClass bbb ; //如果直接使用全局的话,直接出错,(存在全局类根本都编译不了)
return bbb.adasad(a,b);
}

[解决办法]
MyClass * asdasd;

此时你的MyClass还没完整定义,当然不能直接用啦。如果你实在不想用指针,头文件里这样写
extren MyClass asdasd;

包含类定义的cpp文件里这样写
MyClass asdasd;

或者你直接将MyClass asdasd;
移到你MyClass类的定义后面。但这不推荐,头文件里最好不要定义全局变量,容易导致变量冲突。
[解决办法]
引用:
MyClass * asdasd;

此时你的MyClass还没完整定义,当然不能直接用啦。如果你实在不想用指针,头文件里这样写
extren MyClass asdasd;

包含类定义的cpp文件里这样写
MyClass asdasd;

或者你直接将MyClass asdasd;
移到你MyClass类的定义后面。但这不推荐,头文件里最好不要定义全局变量,容易导致变量冲突。


引用:
MyClass * asdasd;

此时你的MyClass还没完整定义,当然不能直接用啦。如果你实在不想用指针,头文件里这样写
extren MyClass asdasd;

包含类定义的cpp文件里这样写
MyClass asdasd;

或者你直接将MyClass asdasd;
移到你MyClass类的定义后面。但这不推荐,头文件里最好不要定义全局变量,容易导致变量冲突。


对鸟,头文件里不要定义全局变量这条规则也包括用指针~

读书人网 >C++

热点推荐