我正在尝试编写一个返回类型为 struct variable的函数。如果我使用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
等对象。但它与结构有什么关系?为什么using namespace std
在直接使用std::
顺利运行程序时会出错?
答案 0 :(得分:1)
正如消息所述,名称$http({
method: 'GET',
url: uri,
headers: {
'Accept': 'application/x-zip-compressed'
},
withCredentials: true
}).
success(function(data, status, headers) {
if (status == 200 || status == 201) {
notify('Success', 'Node exported.');
}
}).
error(function(data, status) {
if (status == 401) {
notify('Forbidden', 'Authentication required to edit the resource.');
} else if (status == 403) {
notify('Forbidden', 'You are not allowed to edit the resource.');
} else {
notify('Failed', status + " " + data);
}
});
在std::distance
与您定义的结构之间是不明确的。
你可以写
distance
而不是using std::cin;
using std::cout;
// more using for identifiers from namespace std to use
答案 1 :(得分:1)
你不应该完全使用using namespace std;
,因为这可能会发生(甚至是工作)。
在您的情况下,编译器不知道您指的是哪个distance
:它可以是您自己的,也可以是std::distance
如果您想在每次写std::cout
时都避免写using std:: cout
。
这将告诉编译器在使用cout
时要查看的位置。