为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
Why can't I call any other overloads of the same function while inside a particular function overload in C++?
最好用一个简单的程序来说明这个问题。
#include <iostream>
#include <utility>
void printPoint(std::pair <int, int> point) {
printPoint(point.first, point.second);
}
void printPoint(int x, int y) {
std::cout << x << ' ' << y << std::endl;
}
int main(void) {
std::pair <int, int> point(2, 3);
printPoint(point);
return 0;
}
我希望两个printPoint
函数通过利用重载来实现相同的功能。然而,在printPoint
函数的特定重载(在本例中为单参数重载(的范围内,编译器只允许我使用该特定重载,因此代码不进行编译。
为什么会这样?此外,有没有什么方法可以缓解这个问题,这样我就不必重写同一个函数体两次了?
这里的申报顺序很重要。
将第二个过载(printPoint(int, int)
(移到第一个过载(printPoint(std::pair <int, int>
(之前;否则它在第一次过载中是看不见的。即
void printPoint(int x, int y) {
std::cout << x << ' ' << y << std::endl;
}
void printPoint(std::pair <int, int> point) {
printPoint(point.first, point.second);
}
实时
相关文章:
- 为什么使用SFINAE而不是函数重载
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- c++:可变模板和函数重载
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- 解决模板成员函数重载
- 为什么不允许成员函数和非成员函数之间的函数重载?
- 推断模板化函数中的函数重载
- C++复制函数重载导致"must be a nonstatic member function"错误
- 为什么 std::sort 找不到合适的(静态成员)函数重载?
- 可变参数泛型 lambda 和函数重载
- C++中的函数重载和继承
- 当有右值构造函数可用时,为什么从右值调用类引用构造函数重载?
- C/C++ 可变参数宏函数重载
- 将基类的成员函数重载到其他派生类C++
- C++ 函数重载匹配
- C++函数重载,具体步骤是什么
- C++:使用 param pack 显式调用函数重载
- 隐式生成的函数重载用于右值参数?
- 使用函数重载输入运算符
- 运算符重载函数上的函数重载