在我的标题文件中,我定义:
inline t_pair pair(int a, int b) { t_pair p; p.a = a; p.b = b; return p; }
但是我收到编译错误“引用'对'是不明确的”。 显然有一个
struct _LIBCPP_TYPE_VIS_ONLY pair
在utility.cpp中定义,我不直接包含。
有没有办法在没有重命名的情况下仍然使用我的配对功能?
答案 0 :(得分:3)
如前所述,您可以使用其他命名空间包装函数声明,或者只使用std::pair
类并避免使用reinventing the wheel。
另请注意,std::pair
类允许您创建一对泛型类型。因此,它不仅限于int
类型的对。您可以找到其用法here的示例。
答案 1 :(得分:0)
是的,将函数声明放入命名空间:
namespace MyNamespace
{
inline t_pair pair(int a, int b) { t_pair p; p.a = a; p.b = b; return p; }
}
然后将其称为MyNamespace::pair (a, b)
。
答案 2 :(得分:0)
您可以(并且可能应该)将您的函数放在命名空间中,但实际上您应该从代码中删除using namespace std
,因为std命名空间中有类pair
。您不能包含实用程序(其中已定义对),但它可以包含在其他文件中。