编译 g++ 时不在范围内声明

not declare in scope when compiled g++

这是我的 A.h 文件

class A
{
public:
    void menuChoice();
void displaystartingMenu(); //EDIT
};

这是我的 A.cpp 文件

#include "A.h"

void displaystartingMenu()
{


    cout<<"Please enter your choice:";


}
void A::menuChoice()
{
    displaystartingMenu();
    cout<<"Hello"<<endl;

}
int main()
{ 
   A a;
   a.menuChoice();

}

我试着把

void menuChoice();

在我的 cpp 文件的顶部,但它仍然无法编译。它给我错误

In function ‘int main()’: A.cpp:112:13: error: ‘menuChoice’ was not declared in this scope menuChoice();

我如何编译:g++ A.cpp A.h

没错,我什至不需要在 cpp 的顶部声明函数,因为我已经在我的头文件中声明了它,并且我已经包含在我的 .cpp 中。这里出了什么问题?

编辑:

错误:

 In function `A::menuChoice()':
A.cpp:(.text+0x229): undefined reference to `A::displaystartingMenu()'

menuChoice是classA的非静态成员函数,为了调用它需要实例化一个对象A,如下

int main()
{
  A a;
  a.menuChoice();

  return 0;
}

选项 1:创建一个 A 实例并调用该实例的 menuChoice 方法:

#include <iostream>

class A {
public:
        void menuChoice();
};

void A::menuChoice() {
        std::cout << "Hello" << std::endl;
}

int main() {
        A a;
        a.menuChoice();
        return 0;
}

选项 2:将 menuChoice 设为静态方法并将其调用为 A::menuChoice:

#include <iostream>

class A {
public:
        static void menuChoice();
};

void A::menuChoice() {
        std::cout << "Hello" << std::endl;
}

int main() {
        A::menuChoice();
        return 0;
}

编辑:解决新问题,当您尝试定义 A::displaystartingMenu 时您写道:

void displaystartingMenu() {
    // ...
}

必须这样定义:

void A::displaystartingMenu() {
    // ...
}