だから、私は仕様ファイルに次のものを持っています
#include <string>
#include <fstream>
using namespace std:
class MyStuff
{
private:
string name;
fstream file;
// other stuff
public:
void setName(string);
}
実装ファイルにもあります
#include "MyStuff.h"
using namespace std;
void MyStuff::setName(string name);
{
name = name
}
そして私が持っているプログラムファイルに...
#include <iostream>
#include <string>
using namespace std;
void main()
{
string name;
MyStuff Stuff;
cout << "Enter Your Name: ";
getline(cin, name);
Stuff.setName(name);
}
そして、私は「名前空間stdを使用して」適用することを集めています。ヘッダーファイルではノーノーであり、完全に修飾することは「より良い」方法です。そのようなstd::cout << stuff << endl;
文字列を使用するには、std名前空間が必要であると理解しています。本当?
もしそうなら、ヘッダーファイルでは、それを行うためにもっと「純粋/クリーン」です...
#include <string>
class MyStuff
{
std::string name;
}
そして、私が現在理解しているように、名前空間stdを使用します。仕様、実装、およびプログラムの3つのファイルすべてにわたって、基本的に3つの名前空間を互いに重ね合わせます。したがって、string name;
各ファイル内で個別に宣言すると、コンパイラーはどちらが何に行くのかわかりません。本当?
私は一般的に、明確にすることは「良い」ことだと理解していますが、その方法の具体性については少し不明確であり、そのすべての根底にあるより深い「理由」に最も興味があります。
だから私の直接の質問は、提供された私の例では、コンパイラと業界の「標準」の両方の関数を説明するための「最も明確な」方法は何ですか?そして、名前空間の推論と実際の実装をより明確に描写するリソースに私を向けることができますか。