我已经编写了一个程序来显示公司的名称和报告名称,但是,我需要这样做,以便如果有人没有输入任何内容,程序会显示两个默认名称。我需要添加一个带有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();
}
答案 0 :(得分: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");
答案 1 :(得分:0)
另一种方法是默认初始化成员变量:
class Heading
{
...
private:
std::string company = "Default";
std::string report = "Default";
};
供参考: 非静态数据成员 Member initialization
答案 2 :(得分:0)
目前尚不清楚你真正想要的是什么。要么您确实不知道如何编写构造函数,要么您需要数据成员的setter。如果你需要一个构造函数,你可以写
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;
}
};
如果您需要setter,那么只需恰当地命名它们即可。例如
void storeCompany( const std::string & );
void storeReport( const std::string & );
而不是storeInfo。