从同一文件中定义的类访问外部函数

时间:2012-07-09 22:43:04

标签: c++ class function

如果我有课程定义

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

2 个答案:

答案 0 :(得分: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中可用。

答案 1 :(得分:4)

在文件中使用hello函数之前定义{<1}}函数 - 之前方法x - 提供函数原型在其使用之前:

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

void myClass::x()
{
   hello();
}