0

如果我有一个类定义

class myClass
{
  void x(); 
};


void myClass::x()
{
   hello(); // error: ‘hello’ was not declared in this scope
}

void hello()
{
   cout << "Hello\n" << endl;
}

如何调用在类范围之外定义并位于同一文件中的函数?我知道我可以使用Namespace::function,但我不确定在这种情况下我应该使用什么Namespace

4

2 回答 2

5

在使用它之前,您至少必须声明它(如果没有定义它)。

通常,如果函数的功能仅在该翻译单元中使用,则这是在匿名命名空间中完成的:

class myClass
{
  void x(); 
};

namespace
{
   void hello()
   {
      cout << "Hello\n" << endl;
   }
}

void myClass::x()
{
   hello(); // error: ‘hello’ was not declared in this scope
}

这提供了函数内部链接(类似于声明它static)并且仅在该 TU 中可用。

于 2012-07-09T22:44:48.167 回答
4

在文件中定义hello函数在它被使用的地方之前 -方法之前x-或者在它被使用的地方之前提供一个函数原型:

void hello();  // function definition is later in the file

void myClass::x()
{
   hello();
}
于 2012-07-09T22:44:39.893 回答