2016-09-27 20 views
-4

このトピックについてはリフレッシャーが必要ですが、実際には答えをオンラインで見つけることはできません。あなたはDogC++ - クラスの名前空間

class Dog 
{ 
public: 
    void Dog::woof() 
    { 
     return; 
    } 
}; 
  • と呼ばれるクラスを持っている場合は

    Dog::Dog開始の内部ひとつひとつ機能しなければなりませんか?それは私がいつもそれをしてきた方法ですが、私はそこにあると尋ねたいです状況はそうではありませんか? Dog::を入れないと、Javaからの静的メソッドのように使うことができますか? Ex。 Dog.woof();代わりのmyDogObj.woof();

  • たちは::演算子を使用しているという事実はWoofDogが名前空間でなくても、Dogの名前空間にあることを意味していますか?それが本当であれば、クラスは自動的に名前空間として自分自身を作成するのでしょうか?

  • は、なぜ我々はそれがclass Dogの内だという事実は、本質的に、既に述べながらDogに属している方法だとC++を伝えるためにDog::を置けばいいの?冗長ではないですか?

  • Dog::woofは、名前空間またはネストされた名前空間の内部で何らかの形で宣言することができ、いずれの場合はありますか? Ex。 Park::Trail::Dog::woof() { return; }

あなたがしなければならないでしょう:

class Dog 
{ 
public: 
    namespace Park 
    { 
     namespace Trail 
     { 
      void Dog::woof() 
      { 
       return; 
      }  
     } 
    } 
}; 
+3

最後の例はナンセンスです。クラスの内部に*名前空間を持つことはできません。 – molbdnilo

+0

クラス内で 'woof'を宣言してクラスの外に定義するとどうなるでしょうか?その関数定義を名前空間の中に入れますか? Ex。 'ネームスペースPark {void Dog :: woof(){return; }} ' – Hatefiend

+1

' Dog'の宣言が 'Park'名前空間の中になければ、動作しません。ジャスはそれを試してください、あなたが表示されます。 – Ceros

答えて

2

犬の内側に一つ一つの機能は、犬::で始まる必要がありますか?それはどういうわけか 私はいつもそれをやったことがありますが、私には質問があります。そこにはどんな状況がありますか? それはそうではありませんか? Dog ::を置かないと:: はJavaの静的メソッドのように使用できますか? Ex。 Dog.woof(); myDogObj.woof()の代わりに。

メソッドは、クラス定義内でDog::で始まらなければならず、その外側のみです。

たちは::演算子を使用しているという事実はウーフは犬が名前空間でなくても、 に犬の名前空間であることを意味するのでしょうか?それが の場合、クラスは自動的に 名前空間として自分自身を作成することを意味しますか?

はい、Dogの範囲です。それはクラス犬の中だという事実は、本質的にすでに を述べながら

は、なぜ我々はそれが犬 に属している方法だと、C++を伝えるために犬を::置けばいいの?冗長ではないですか?あなたがそれをしない理由です

はい、。

+0

'Dog Dog'内のメソッドを' class Dog'の括弧の外に置いても定義できますか? 'Dog'の外で定義するメソッドは、' Dog'と同じ 'cpp'ファイル内になければなりませんか? – Hatefiend

+0

@HatefiendあなたはDogの中に宣言し、どこにでも定義することができます。いいえ、それはありません。 –

+0

外部を宣言し定義する方法はありますか?または外部のみを定義することはできますか? (私は後で推測している) – Hatefiend

関連する問題