2

我编写了一个程序来显示公司名称和报告名称,但是,我需要这样做,以便如果有人没有输入任何内容,程序会显示两个默认名称。我需要添加一个带有 2 个参数的构造函数。我发现自己很困惑,越来越迷失。我尝试让我的代码看起来像教科书示例的代码,但无济于事。有人可以给我一些指示和方向吗?

我在 Microsoft Visual Studios Express 2012 中使用 C++,这是我当前的代码。

//This program displays a company's name and report. 
#include <iostream>
#include <string>
using namespace std;



class Heading
{   
private:
    string company;
    string report;

public:

    void storeInfo (string c, string r);

    string getCompany()
    {
        return company;
    }
    string getReport()
    {
        return report;
    }
};

void Heading::storeInfo(string c, string r)
{
company = c;
report = r;
}

void storeInfo(Heading&);
void showInfo(Heading);

int main()
{
Heading company;

storeInfo(company);
showInfo(company);

cin.ignore();
cin.get();

return 0;
}

/*****storeInfo*****/
void storeInfo(Heading &item)
{
string company;
string report;

cout << "\nPlease enter the company name.\n";
getline(cin, company);

cout << "\nPlease enter the report name.\n";
getline(cin,report);

item.storeInfo(company, report);
}

/*****showInfo*****/
void showInfo(Heading item)
{
cout << item.getCompany() << endl;
cout << item.getReport();
}
4

3 回答 3

4

把它放在你的类中以创建一个构造函数:

Heading() {
    company = "Default company";
    report = "Default report";
}

你也可以这样做:

Heading(const char *def_company, const char *def_report) {
     company = def_company;
     report = def_report;
}

并像这样创建新的标题对象(动态内存):

Heading *object = new Heading("default company", "default report");

或者像这样(在堆栈上分配):

Heading object("default_company", "default report");
于 2013-10-17T18:40:40.717 回答
0

另一种方法是默认初始化成员变量:

class Heading
{
   ...

private:
    std::string company = "Default";
    std::string report = "Default";
};

供参考: 非静态数据成员 成员初始化

于 2013-10-17T18:55:50.163 回答
0

目前尚不清楚您真正想要什么。要么您确实不知道如何编写构造函数,要么您需要数据成员的设置器。如果你需要一个构造函数,你可以写

class Heading
{   
private:
    string company;
    string report;
    const char *default_company = "Unknown company";
    const char *default_report  = "Unknown report";

public:

    Heading( const std::string &company = default_company, const std::string &report = default_report )
        : company( company ), report( report )
    {
    }
    void storeInfo (string c, string r);

    string getCompany()
    {
        return company;
    }
    string getReport()
    {
        return report;
    }
};

如果您需要设置器,那么只需适当地命名它们。例如

void storeCompany( const std::string & );
void storeReport( const std::string & );

而不是 storeInfo。

于 2013-10-17T18:57:34.280 回答