2016-07-04 13 views
-2

以下のプログラムを実行しようとすると、エラーが発生します。静的メンバー関数のスローエラー

#include <iostream> 

using namespace std; 

class book { 
    static int i; 
    public : 
     static void set_data(void) // static member function 
     { 
      i++; 
      cout<<i<<endl; 
     } 
}; 

int book :: i = 0; 

int main() 
{ 
    cout<<book :: set_data() << endl; // trying to display the static member function data here but it is giving error 
} 

我々は静的メンバ関数を使用したい場合、それは我々が静的引数を返す持っている必要がある必要がありますか?

+0

デバッグのヘルプを求める質問( '**なぜこのコードは機能していないのですか?**')には、問題の内容、特定の問題またはエラー、およびそれを再現するのに必要な最短コードが**含まれている必要があります** 。 **明確な問題文**のない質問は他の読者には役に立たない。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) – Biffen

+2

あなたは 'void'である 'set_data()'の戻り値を出力しようとしていますが、意味をなさないだけです。 – songyuanyao

+0

問題ではありませんが、余分なものが必要な場合を除き、 'std :: endl'を使用しないでください。 '' \ n ''は行を終わらせます。 –

答えて

0

set_datavoidですので、coutとは使用できません。この文脈でstaticは、あなたが非にアクセスできないことを意味する。

static int set_data(void) 
{ 
    i++; 
    return i; 
} 

(あなたは「静的引数を」返す必要はありません。それを解決するには、次のことができstd::coutと出力set_data実際リターン何かを持っています - staticクラスメンバーのデータまたは関数)

cout << book::set_data() << endl;は問題ありません。また、publicアクセスに設定i

cout << book::i << endl;

を書きます。

関連する問題