这样的代码是正确的:
namespace cplusplus_primer {
class Sales_data { /*...*/ };
Sales_data operator+(const Sales_data&, const Sales_data&);
class Query {};
class Query_base {};
}
#include <iostream>
#include <string>
int main()
{
cplusplus_primer::Sales_data book; // 使用了命名空间
std::string str("hello"); // 使用了 std 命名空间
std::cout << str << std::endl;
return 0;
}
但我把这些文件放在命名空间中为何就是错的呢?
namespace cplusplus_primer {
#include <iostream>
#include <string>
class Sales_data { /*...*/ };
Sales_data operator+(const Sales_data&, const Sales_data&);
class Query {};
class Query_base {};
}
//#include <iostream>
//#include <string>
int main()
{
cplusplus_primer::Sales_data book; // 使用了命名空间
cplusplus_primer::std::string str("hello"); // 使用了 std 命名空间
cplusplus_primer::std::cout << str << cplusplus_primer::std::endl;
return 0;
}
有人知道这其中原因么