首页 > 解决方案 > C++:如何从我自己的函数中的头文件调用一个函数(比如说 funA()),它的名字也是 funA()?

问题描述

我想reverse(BidirectionalIterator first, BidirectionalIterator last)从函数<algorithm>内部的头文件中调用一个函数,其名称也是reverse(int).

代码:

#include<iostream>
#include<algorithm>

using namespace std;

class Solution{
public:
    int reverse(int x){
        string num = to_string(x);
        reverse(num.begin(), num.end());
    }
};

我认为它会像函数重载一样根据传递的参数自动调用适当的函数。但是,事实并非如此。

我试过了:

namespace algo{
    #include<algorithm>
}

但它给出了很多错误。

标签: c++functionnamespacesoverloadingname-conflict

解决方案


啊,现在您正在体验 StackOverflow 上的人们总是大喊不使用using namespace std;. 问题是您将整个命名空间带入全局命名空间,这将导致这样的冲突。

但是,如果您删除该行,那么现在所有导入的函数都保留在std命名空间中,因此您可以执行以下操作:

#include<iostream>
#include<algorithm>

// BAD
// using namespace std;

class Solution{
public:
    int reverse(int x){
        std::string num = std::to_string(x);
        std::reverse(num.begin(), num.end());
        return std::stoi(num); // Don't forget to return!
    }
};

推荐阅读