1

我想在 Foo 的“bar”方法中从“somelib”调用未作用域的函数“bar”。

// .h
class Foo
{
    int bar();
};

// .cpp
#include "Foo.h"
#include <somelib> // contains unscooped function bar()

int Foo::bar()
{
    return bar(); // unwanted recursive function
}

解决它的一种方法是使用辅助函数,例如“bar_helper”

// .cpp
#include "Foo.h"
#include <somelib> // contains unscooped function bar()

// unnamed namespace
namespace
{
    int bar_helper()
    {
        return bar(a);
    }
}

int Foo::bar()
{
    return bar_helper();
}

  • 能不能变漂亮点?
  • 有更好的解决方案吗?
4

2 回答 2

2

明确范围,在本例中为全局范围:

return ::bar();
       ^^
于 2014-03-09T10:57:16.790 回答
2

如果非成员bar函数在全局范围内,则可以使用范围运算符::

int Foo::bar()
{
    return ::bar();
}
于 2014-03-09T10:57:46.737 回答