处理C++中模棱两可的声明
Dealing with ambiguous declarations in C++
在我的头文件中,我定义了:
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
在实用程序.cpp中定义,我没有直接包含。
有没有办法在不重命名的情况下仍然使用我的配对函数?
如前所述,您可以使用另一个命名空间包装函数声明,也可以只使用 std::pair
类并避免重新发明轮子。
另请注意,std::pair
类允许您创建泛型类型对。因此,它不仅限于 int
型成对。您可以在此处找到其用法的示例。
是的,通过将函数声明放入命名空间:
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)
一样称呼它.
你可以(并且可能应该)把你的函数放在命名空间中,但是,你实际上应该从代码中删除using namespace std
,因为 std 命名空间中有类pair
。您不能包含实用程序(其中定义了 pair),但它可以由其他文件包含。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 在函数内部的声明中初始化数组,并在外部使用它
- C 字符串正向声明是模棱两可的
- 2D阵列声明阵列中的模棱两可
- 处理C++中模棱两可的声明