C ++如何将此构造函数放在cpp文件中?

时间:2014-06-01 11:41:22

标签: c++ constructor refactoring

我在.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()构造函数

2 个答案:

答案 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;
}

On IDEone

但正如其他人所说,你甚至应该只为谷歌"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,请记住将实现文件添加到项目中,或者如果您在命令行中工作,请编译并链接它。