我知道:MFC中类的成员函数在.h文件中声明,然后在.cpp文件中实现。
我的问题:类的成员函数应该在哪里声明、定义?
我的做法(有问题):
1、将类的成员变量写在.h文件中,则此变量成功声明为该类的成员变量。但是由于.h被包含两次(一次在类的实现文件.cpp中,一次在主函数的.cpp中)会出现多重定义的问题。代码:
-------------myClass.h-------------class myClass
{
protected:
int a;
public:
int getA();
};-------------myClass.cpp-------------#include 'myClass.h'
int myClass::getA()
{
return a;
}-------------main.cpp-------------#include 'myClass.h'
void main()
{
myClass *class1=new myClass;
class1->getA();
}2、将类的成员变量写在类的实现文件.cpp中,则没有多重定义的问题,但是此变量不是类的成员函数。代码:
-------------myClass.h-------------class myClass
{
public:
int getA();
};-------------myClass.cpp-------------#include 'myClass.h'int a;int myClass::getA()
{
return a;
}-------------main.cpp-------------#include 'myClass.h'
void main()
{
myClass *class1=new myClass;
class1->getA();
}能否把a声明为myClass成员变量,并且不会出现多重定义,在主函数中使用时也正常?
GOOGLE一下,说是在.h中声明变量需要加extern,但是加了extern编译报错,illegal storage class。
想了好久想不到对策,所以到CSDN上来求救来了。HELP!!
我的问题:类的成员函数应该在哪里声明、定义?
我的做法(有问题):
1、将类的成员变量写在.h文件中,则此变量成功声明为该类的成员变量。但是由于.h被包含两次(一次在类的实现文件.cpp中,一次在主函数的.cpp中)会出现多重定义的问题。代码:
-------------myClass.h-------------class myClass
{
protected:
int a;
public:
int getA();
};-------------myClass.cpp-------------#include 'myClass.h'
int myClass::getA()
{
return a;
}-------------main.cpp-------------#include 'myClass.h'
void main()
{
myClass *class1=new myClass;
class1->getA();
}2、将类的成员变量写在类的实现文件.cpp中,则没有多重定义的问题,但是此变量不是类的成员函数。代码:
-------------myClass.h-------------class myClass
{
public:
int getA();
};-------------myClass.cpp-------------#include 'myClass.h'int a;int myClass::getA()
{
return a;
}-------------main.cpp-------------#include 'myClass.h'
void main()
{
myClass *class1=new myClass;
class1->getA();
}能否把a声明为myClass成员变量,并且不会出现多重定义,在主函数中使用时也正常?
GOOGLE一下,说是在.h中声明变量需要加extern,但是加了extern编译报错,illegal storage class。
想了好久想不到对策,所以到CSDN上来求救来了。HELP!!
如果你还有重复定义的问题,你可以在头文件中加入#ifndef MYCLASS_H
#define MYCLASS_Hclass myClass
{
protected:
int a;
public:
int getA();
};#endif这样就不会出现重复定义的情况了。
1. *.h文件被包括多次,并不表明其中定义的类以及类成员变量被重复定义;
2.*.h文件的出现就是为了解决可能发生的重复定义而提出的解决方案,正是通过同一个*.h文件,才确保有关类及其变量具有清楚的唯一性与封装性.