我在.h
文件中有一个构造函数
C(std::string s = "",int i = 0,double d = 1)
{
dataMember1 = s;
dataMember2 = i;
dataMember3 = d;
}
如果你提供string,int和double的值,它将使用这些值,但是没有它们,它将使用默认值。我的问题是如何重构这个,以便我把它放在.cpp
文件中。
如果不重构,它可以正常工作,例如,如果我声明
C object1("object1", 0, 1), object2;
它会起作用,但如果我重构,object2
会导致编译错误,说我没有C()
构造函数
答案 0 :(得分:2)
FWIW:
#include <iostream>
#include <string>
using namespace std;
class C{
public:
C(string a= "" , int foo=1, char bar=0);
};
C::C(string a, int foo, char bar){ // this can go into a .cpp file
cout<<a<<foo<<bar;
}
int main() {
C c("hi",1,'T');
return 0;
}
但正如其他人所说,你甚至应该只为谷歌"C++ tutorial&#34;(实际上处理类章节中的类似内容)或read a book。这将是一个令人沮丧,快速和充实的... ...
答案 1 :(得分:1)
在标题中输入例如
struct C
{
C( std::string s = "", int i = 0, double d = 1 );
};
在您的实施文件中,输入
C::C( std::string s, int i, double d )
// Memory initializer list here, if applicable.
{
// whatever
}
重复实现文件中的默认值规范,将是一个错误。
如果您正在使用IDE,请记住将实现文件添加到项目中,或者如果您在命令行中工作,请编译并链接它。