0

这是我的 Ah 文件

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 文件的顶部,但它仍然无法编译。它给了我错误

在函数'int main()'中:A.cpp:112:13:错误:'menuChoice'未在此范围内声明menuChoice();

我该如何编译:g++ A.cpp 啊

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

编辑:

错误 :

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

2 回答 2

3

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

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

  return 0;
}
于 2016-10-18T03:41:32.730 回答
3

选项 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() {
    // ...
}
于 2016-10-18T03:45:42.950 回答