对模板类(C ++)的模糊引用

问题描述 投票:0回答:1

我是模板类的新手,并试图实现一个非常简单的程序,只是为了尝试其功能和语法。我初始化了模板类的距离,然后尝试获取数据并显示它。

#include<iostream>
using namespace std;

template <class T>

class distance {

T feet;
T inches;

public:
    distance ()
    {

    }
T getdata (T f, T i)
{
    feet=f;
    inches=i;
}
void showdata ()
{
    cout<<"Distance is "<<feet<<" feet and "<<inches<<" inches";
}

};

int main ()

{

    distance <int> x;
    x.getdata(5,7);
    x.showdata();


}

但是,在distance <int> x行上,出现错误,指出'错误:对'距离'的引用不明确'。我无法弄清楚我的错误。

c++ class templates
1个回答
1
投票
using namespace std;

您刚刚发现了why using namespace std; is bad practice

[这会将C ++库的using namespace std;模板注入程序的全局命名空间,从而导致与您自己的std::distance模板发生名称冲突。

[删除它,用distance替换所有cout,并固定从std::cout返回的值,修复了所有编译错误。

[将其用作学习课程:以后避免使用getdata(),或准备处理神秘的编译错误。

© www.soinside.com 2019 - 2024. All rights reserved.