如果我有课程定义
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
答案 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();
}