C++ - 在类中调用与类同名的函数

Xym*_*ech 16 c++ constructor class

我试图用c ++编写一个类,我遇到了一个相当奇怪的问题:在一个与类同名的类中调用外部函数.这有点令人困惑,所以这是一个例子:

void A(char* D) {
  printf(D);
}

class A 
{
public:
  A(int B);
  void C();
};

A::A(int B) {
  // something here
}

void A::C() {
  A("Hello, World.");
}
Run Code Online (Sandbox Code Playgroud)

编译器在倒数第二行抱怨它找不到函数A(char*),因为它在类中,并且构造函数与函数同名.我可以在外面写另一个函数,比如:

ousideA(char* D) {
  A(D);
}
Run Code Online (Sandbox Code Playgroud)

然后在A :: C中调用outsideA,但这似乎是解决问题的愚蠢方法.有人知道更合适的方法来解决这个问题吗?

Eva*_*ran 42

::A("Hello, world.");
Run Code Online (Sandbox Code Playgroud)

应该工作正常.基本上它是说"使用A在全局命名空间中找到的"


Ada*_*eld 5

使用范围解析运算符 ::从全局范围访问名称:

void A::C() {
  ::A("Hello, world.");
}
Run Code Online (Sandbox Code Playgroud)