C++ 定义函数以在C++; 使用名称空间std; #包括 #包括 结构距离{ 国际公里; 整数米; 整数厘米; }; 距离加(){ } int main(){ 返回0; }

C++ 定义函数以在C++; 使用名称空间std; #包括 #包括 结构距离{ 国际公里; 整数米; 整数厘米; }; 距离加(){ } int main(){ 返回0; },c++,function,struct,C++,Function,Struct,尝试定义返回“距离”数据类型的函数。 在尝试定义函数时,我遇到了“距离不明确”的问题。因为,这是一个典型的原因,为什么您永远不应该使用命名空间std包含。由于您引入了std名称空间,编译器不确定您的distance意思是什么:您的自定义struct distance,或std::distance,因此“距离是不明确的” 最简单也是最好的修复方法是不使用使用命名空间std。当然,你可能会花一些额外的时间来写std::,但你会从这些头痛中解脱出来 您还可以将结构重命名为Distance,或者使用:D

尝试定义返回“距离”数据类型的函数。 在尝试定义函数时,我遇到了“距离不明确”的问题。

因为,这是一个典型的原因,为什么您永远不应该使用命名空间std包含
。由于您引入了
std
名称空间,编译器不确定您的
distance
意思是什么:您的自定义
struct distance
,或
std::distance
,因此“距离是不明确的”

最简单也是最好的修复方法是不使用
使用命名空间std
。当然,你可能会花一些额外的时间来写
std::
,但你会从这些头痛中解脱出来


您还可以将
结构重命名为
Distance
,或者使用
:Distance add()
更改结构名称,在任何名称空间中定义它,或者不使用
使用名称空间stdstd
命名空间中已经有一个名为
distance()
的函数

using namespace std;
#include <iostream>
#include <cstring>

struct distance {
    int Kilometer;
    int Meter;
    int Centimeter;
};

distance add() {
}

int main() {
    return 0;
}
#包括
#包括
名称空间myNamespace{
结构距离{
国际公里;
整数米;
整数厘米;
};
距离加(){
返回距离();
}
}
使用名称空间std;
int main()
{
myNamespace::距离d1;
d1=myNamespace::add();
返回0;
}
通常
使用名称空间std是不好的做法,请参阅

.

这就是为什么不应该使用命名空间std包含
。请看。@1201程序我知道std::distance是存在的,但我不确定这会导致这里的歧义。除了作为返回距离的函数之外,是否还有其他方法来解析此代码?使用
使用namespace std
,则将
std::distance
放入与
distance
结构相同的范围。这就是代码不明确的原因-编译器不知道使用哪个
距离。
#include <iostream>
#include <cstring>

namespace myNamespace{

    struct distance {
        int Kilometer;
        int Meter;
        int Centimeter;
    };

    distance add() {

        return distance();
    }
}

using namespace std;

int main() 
{
    myNamespace::distance d1;
    d1 = myNamespace::add();

    return 0;
}