【发布时间】:2016-03-19 10:12:46
【问题描述】:
我试图编写一个返回类型为 struct 变量的函数。 如果我使用 using namespace std; 会出现错误,但如果改为使用 std::,程序运行良好。
错误代码:
#include<iostream>
using namespace std;
struct distance
{
int feet;
int inches;
};
distance foo(distance, distance);
int main()
{
distance d1, d2;
cout << "Input feet of d1: "; cin >> d1.feet;
cout << "\nInput inches of d1: "; cin >> d1.inches;
cout << "\nInput feet of d2: "; cin >> d2.feet;
cout << "\nInput inches of d2: "; cin >> d2.inches;
distance large = foo(d1, d2);
cout << "The larger distance is: " << large.feet << "\'-" << large.inches << "\"";
}
distance foo(distance d1, distance d2)
{
float temp1 = d1.feet + d1.inches/12;
float temp2 = d2.feet + d2.inches/12;
if(temp1>temp2) return d1;
else return d2;
}
错误:对distance 的引用不明确。
没有命名空间std的工作代码:
#include<iostream>
struct distance
{
int feet;
int inches;
};
distance foo(distance, distance);
int main()
{
distance d1, d2;
std::cout << "Input feet of d1: "; std::cin >> d1.feet;
std::cout << "\nInput inches of d1: "; std::cin >> d1.inches;
std::cout << "\nInput feet of d2: "; std::cin >> d2.feet;
std::cout << "\nInput inches of d2: "; std::cin >> d2.inches;
distance large = foo(d1, d2);
std::cout << "The larger distance is: " << large.feet << "\'-" << large.inches << "\"";
}
distance foo(distance d1, distance d2)
{
float temp1 = d1.feet + d1.inches/12;
float temp2 = d2.feet + d2.inches/12;
if(temp1>temp2) return d1;
else return d2;
}
据我所知,命名空间 std 有 cout, cin 等对象。但它与结构有什么关系?为什么直接使用std::运行程序流畅,using namespace std报错?
【问题讨论】:
-
Error: Reference to distance is ambiguous.你认为这可能意味着什么? -
@πάνταῥεῖ 谢谢。我不知道std命名空间中有一个距离结构。
-
可惜这种东西在网上没有办法搜索到。
-
@user31782 std 命名空间中还有很多其他常用词:function、plus、less、set、pair、copy、unique...
标签: c++ namespaces