1. ホーム
  2. c++

[解決済み] .cpp ファイルに C++ 名前空間メソッドを定義する正しい方法

2022-09-14 03:54:11

質問

おそらく重複していると思いますが、簡単に検索できるものではありません...。

のようなヘッダが与えられる。

namespace ns1
{
 class MyClass
 {
  void method();
 };
}

見たところ method() は.cppファイル内でいくつかの方法で定義されています。

バージョン1です。

namespace ns1
{
 void MyClass::method()
 {
  ...
 }
}

バージョン2です。

using namespace ns1;

void MyClass::method()
{
 ...
}

バージョン3:

void ns1::MyClass::method()
{
 ...
}

正しい」方法というのはあるのでしょうか?どれも同じ意味ではないという意味で、「間違っている」のでしょうか?

どのように解決するのですか?

バージョン2では、どの名前空間の MyClass がどの名前空間に属しているかが分からず、非論理的です(クラス関数が同じ名前空間にない?)

バージョン1が正しいのは、名前空間で、関数を定義していることを示すからです。

バージョン3も正しいです。 :: スコープ解決演算子を使って MyClass::method () を名前空間内の ns1 . 私はバージョン3が好きです。

参照 名前空間 (C++) . これが一番良い方法です。