我是模板类的新手,并试图实现一个非常简单的程序,只是为了尝试其功能和语法。我初始化了模板类的距离,然后尝试获取数据并显示它。
#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
行上,出现错误,指出'错误:对'距离'的引用不明确'。我无法弄清楚我的错误。
using namespace std;
您刚刚发现了why using namespace std;
is bad practice。
[这会将C ++库的using namespace std;
模板注入程序的全局命名空间,从而导致与您自己的std::distance
模板发生名称冲突。
[删除它,用distance
替换所有cout
,并固定从std::cout
返回的值,修复了所有编译错误。
[将其用作学习课程:以后避免使用getdata()
,或准备处理神秘的编译错误。