我搞不懂如何将一个简单类的实现和声明代码分离到一个新的头文件和cpp文件中。例如,我如何分隔以下类的代码?
class A2DD
{
private:
int gx;
int gy;
public:
A2DD(int x,int y)
{
gx = x;
gy = y;
}
int getSum()
{
return gx + gy;
}
};
发布于 2012-03-06 16:09:56
类声明放入头文件中。添加#ifndef
include guards是很重要的。大多数编译器现在也支持#pragma once
。另外,我省略了私有,默认情况下,C++类成员是私有的。
// A2DD.h
#ifndef A2DD_H
#define A2DD_H
class A2DD
{
int gx;
int gy;
public:
A2DD(int x,int y);
int getSum();
};
#endif
实现放在CPP文件中:
// A2DD.cpp
#include "A2DD.h"
A2DD::A2DD(int x,int y)
{
gx = x;
gy = y;
}
int A2DD::getSum()
{
return gx + gy;
}
发布于 2012-03-06 16:12:07
通常,您的.h包含类定义,即所有数据和所有方法声明。在您的案例中如下所示:
A2DD.h:
class A2DD
{
private:
int gx;
int gy;
public:
A2DD(int x,int y);
int getSum();
};
然后,您的.cpp包含如下方法的实现:
A2DD.cpp:
A2DD::A2DD(int x,int y)
{
gx = x;
gy = y;
}
int A2DD::getSum()
{
return gx + gy;
}
发布于 2018-07-07 13:11:59
在以更广泛的方式研究这个问题时,有必要向偶然发现这个问题的读者指出,如果您只想将项目拆分成文件,则不需要使用接受答案的步骤。只有当您需要单个类的多个实现时才需要它。如果每个类的实现是一个,那么每个类只有一个头文件就足够了。
因此,从接受答案的示例中,只需要这一部分:
#ifndef MYHEADER_H
#define MYHEADER_H
//Class goes here, full declaration AND implementation
#endif
#ifndef等预处理器定义允许多次使用它。
PS。一旦你意识到C/C++是“愚蠢的”,而#include只是一种“在这里转储这个文本”的方式,这个主题就会变得更加清晰。
https://stackoverflow.com/questions/9579930
复制相似问题