如何告诉C ++使用不同的函数(与另一个函数同名)?

时间:2013-04-09 03:54:53

标签: c++

我的程序中包含两个具有相同功能名称的库,但我需要能够同时使用这两个库,但我还需要C ++来知道我所指的是哪一个(在某些地方我只会指一个或另一个)。我这样做的原因是因为我正在创建自己的库,我想为我的函数设置某些名称,但是它们与我所包含的其他人的库中的函数相冲突,更糟糕的是,有些我的库中的函数实际上使用了具有相同名称的其他人库中的函数。

顺便说一句,我的库只是一个.h / .cpp文件。此外,在调用MY函数时,我不想要任何额外的行李,例如myNameSpace :: myFunc()。我只想把它称为myFunc()。但是,我不介意使用命名空间调用其他人函数(虽然我不想修改他们的库,以防我破坏某些东西)。 (我完全不熟悉C ++ btw)

HERES MY NEW((TEST - SO FAR)代码:不工作错误: 错误C2668:'myFunc':对重载函数的模糊调用

main program.cpp

    #include "otherslib.h"
    #include "mylib.h"
    #include <iostream>

    using namespace myNamespace;

    int main(){

        std::cout << myFunc() << std::endl;

        return 0;
    }

mylib.h

    #pragma once

    namespace myNamespace{
        int myFunc();
    }

mylib.cpp

    #include "mylib.h"

    namespace myNamespace{
        int myFunc(){
            return 1;
        }
    }

otherslib.h

    #pragma once

    int myFunc();

otherslib.cpp

    #include "otherslib.h"

    int myFunc(){
        return 0;
    }

1 个答案:

答案 0 :(得分:4)

您应该在命名空间中定义函数,并在调用它们时使用命名空间。

namespace myNamespace
{
    int myFunc(etc) { ... }
}

int main() {
    cout << myNamespace::myFunc();
}

为避免必须始终指定命名空间,您可以执行以下操作:

namespace myNamespace
{
    int myFunc(etc) { ... }

    int main() 
    {
        // Call your own myFunc:
        myFunc();

        // Call their myFunc:
        ::myFunc();
    }
}