#include <iostream>
#include <string>
using namespace std;
namespace string {
class string {
string a;
public:
string() {
string ( const string *q ): a(*q)
{ }
string (string &r):a(r.a)
{ }
string (const std::string &_a):a(_a)
{ }
~demo () {
}
void show () {
cout << a;
}
void change (const std::string &_a) {
a = _a;
}
};
}
}
using namespace string;
int main () {
demo s1;
demo s2("Hello");
demo s3(s2);
s1.show();
s2.show();
s3.show();
s2.change("Java");
s2.show();
s3.show();
}
所需的输出是Hello Hello Java Hello
我想定义一个名称空间,即字符串。并且在c ++中有一个头文件,即字符串都具有相同的名称
所以我该如何编码程序以避免c ++中这两个相同名称之间的名称冲突。
答案 0 :(得分:2)
似乎您的教授希望您理解以下内容,
using namespace std;
)试图编译您的程序。不确定在遵循成功编译的解决方案后您的意图是否正确。检查一下。
#include <iostream>
#include <string>
// Do not pollute the global namespace with using namespace.
//using namespace std;
namespace string {
class string {
std::string a; // Assume you need to store a string inside your class.
public:
string() {};
string (const std::string *q ) : a(*q) { }
string (string &r):a(r.a) { }
string (const std::string &_a):a(_a) { }
~string() {}
void show () {
std::cout << a;
}
void change (const std::string &_a) {
a = _a;
}
}; // ~class end
}; //~namespace end
int main () {
// Use full namespace qualified ID everywhere
string::string s1;
string::string s2("Hello");
string::string s3(s2);
s1.show();
s2.show();
s3.show();
s2.change("Java");
s2.show();
s3.show();
}
请勿直接使用。学习以下内容。
using namespace std
不好。答案 1 :(得分:0)
string
这样的通用名称。using namespace std
。而是在需要时使用cout
这样的名称空间的特定功能(例如std::cout
)。