2

会社名とレポート名を表示するプログラムを作成しましたが、誰かが何も入力しない場合、プログラムが 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

メンバー変数をデフォルトで初期化するためのもう 1 つの方法は次のとおりです。

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 に答える