请问C++如果要把一个类放进库中, 那么头文件和CPP文件分别应该怎么写呢?

时间:2021-04-07 17:41:14
/*测试的类*/
class Temp {
private:
int variable;
public:
Temp(void) {
variable = 0;
}
Temp(int newVariable) {
variable = newVariable;
}
void changeVariable(int newVariable) {
variable = newVariable;
}
};


头文件代码:
class Temp {
private:
int variable;
public:
Temp(void);
Temp(int newVariable);
void changeVariable();
};


CPP文件里代码:
Temp(void) {
variable = 0;
}
Temp(int newVariable) {
variable = newVariable;
}
void changeVariable(int newVariable) {
variable = newVariable;
}


但是会报错, 例如variable未声明...请问该怎么修改?

7 个解决方案

#1


 void changeVariable();   
 void changeVariable(int newVariable) {
    variable = newVariable;
}
申明与实现不一致

#2


如果要放入库中,我的习惯一般是只写头文件,所有的实现,都放头文件的class中。
尤其是作为代码库的时候,同时存在.h和.cpp,引用起来不太方便。

#3


.h和.cpp的分离写法,一般是用于二进制库,而非源代码库。这种情况下,头文件是给别人调用的,但同时会提供编译好的.lib文件。

在.cpp的实现中,你不仅要指明方法的名称和参数,还要指明是哪个类的方法,如:

void Temp::changeVariable(int newVariable) {
    variable = newVariable;
}

#4


头文件中void changeVariable() 缺少行参应该改为void changeVariable(int)

#5


引用 4楼tetrachloroethylene 的回复:
头文件中void changeVariable() 缺少行参应该改为void changeVariable(int)
报错问题参考三楼

#6


CPP文件这样改:


Temp::Temp(void) {
variable = 0;
}
Temp::Temp(int newVariable) {
variable = newVariable;
}
void Temp::changeVariable(int newVariable) {
variable = newVariable;
}

#7


该回复于2016-12-30 08:27:18被管理员删除

#1


 void changeVariable();   
 void changeVariable(int newVariable) {
    variable = newVariable;
}
申明与实现不一致

#2


如果要放入库中,我的习惯一般是只写头文件,所有的实现,都放头文件的class中。
尤其是作为代码库的时候,同时存在.h和.cpp,引用起来不太方便。

#3


.h和.cpp的分离写法,一般是用于二进制库,而非源代码库。这种情况下,头文件是给别人调用的,但同时会提供编译好的.lib文件。

在.cpp的实现中,你不仅要指明方法的名称和参数,还要指明是哪个类的方法,如:

void Temp::changeVariable(int newVariable) {
    variable = newVariable;
}

#4


头文件中void changeVariable() 缺少行参应该改为void changeVariable(int)

#5


引用 4楼tetrachloroethylene 的回复:
头文件中void changeVariable() 缺少行参应该改为void changeVariable(int)
报错问题参考三楼

#6


CPP文件这样改:


Temp::Temp(void) {
variable = 0;
}
Temp::Temp(int newVariable) {
variable = newVariable;
}
void Temp::changeVariable(int newVariable) {
variable = newVariable;
}

#7


该回复于2016-12-30 08:27:18被管理员删除