-1

私はいくつかの機能を持つ構造infoを持っています。これらの関数の 1 つはinfo combineInfoで、2 つの引数 (2 つの情報セット) を取ります。

Info combineInfo(info1, info2);

ではmain、コンストラクターを使用してすべてを info1 と info2 に入力しましたが、すべて問題ありません。combineInfo(info1, info2)しかし、から呼び出すと行き止まりに陥りmainます。「エラー:combineInfoこのスコープで宣言されていませんでした」というメッセージが表示されます。

Info info1; //this is from a constructor that inputs all the values from cin.
Info info2; // ^^
Info3 =  combineInfo(info1, info2;
info3.printinfo(); // constructor from class, works fine.

関数は次のようになります。

Info Info::combineInfo(Info1, Info2); // sets some values of info1 to info3 and some of info2 to info3. 
4

2 に答える 2

1

関数は次のようにする必要があります。

  class Info{
    static Info combineInfo(Info info1, Info info2) { 
      //implementation  
    }
    //the rest of the class implementation!
  };

また、メンバー関数なのでスコープ解決 operator が必要::です。

info3 = Info::combineInfo(info1, info2);そして、これはあなたがそれを呼び出す方法です!

combineInfoあなたが持っている現在の実装は、クラス(メンバー関数)内にある間、グローバルスコープにあると予想されます-したがって、エラーです!

于 2013-03-12T06:34:59.000 に答える
0

Info::combineInfo(info1, info2); を使用します。

外部のメンバー関数に直接アクセスすることはできません。スコープ解決演算子 :: または を使用する必要があります。をクリックしてアクセスします。

于 2013-03-12T13:49:38.483 に答える