0

これは以前に尋ねられたように思えるかもしれませんが、周りを見回したところ、そのstatic方法はうまくいきませんでした。これが私のコードです:

struct Customer {
public:
    string get_name();
private:
    string customer,first, last;
};

関数を呼び出す場所は次のとおりです。

void creation::new_account() {
Customer::get_name(); //line it gives the error on.
}

正常にコンパイルされるコードの例を次に示します。

struct Creation { public: string get_date(); private: string date; };

それから私はそれを同じように呼びます

void Creation::new_account() { Creation::get_date();}

したがって、なぜ一方が機能し、もう一方が機能しないのか、私の混乱。

編集:わかりました。別のクラスの一部である関数定義内で別の構造体の関数を呼び出していることに気付きました。了解しました 回答者の皆様ありがとうございました

4

3 に答える 3

0

「そのstatic方法は私にはうまくいきませんでした」. それは方法ではなく、言語がどのように機能するかです。

具体的なオブジェクトなしでメソッドを呼び出したい場合は、静的である必要があります。それ以外の場合は、オブジェクトが必要です。

コードは次のいずれかで動作します。

struct Customer {
public:
    static string get_name();
private:
    string customer,first, last;
};

また

void creation::new_account() {
    Customer c;
    //stuff
    c.get_name();
}
于 2013-10-02T07:12:44.780 に答える