[英]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>
) 之前移動第二個重載 ( printPoint(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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.