这是我的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文件的顶部,但它仍然无法编译。它给了我错误
在函数'int main()'中:A.cpp:112:13:错误:'menuChoice'未在此范围中声明menuChoice();
我如何编译:g ++ A.cpp A.h
通过右边我甚至不需要声明cpp顶部的函数,因为我已经在我的头文件中声明它并且我已经包含在我的.cpp中。这里出了什么问题?
修改
错误:
In function `A::menuChoice()':
A.cpp:(.text+0x229): undefined reference to `A::displaystartingMenu()'
答案 0 :(得分:3)
menuChoice是A类的非静态成员函数。为了调用它,您需要实例化一个对象A,如下所示
int main()
{
A a;
a.menuChoice();
return 0;
}
答案 1 :(得分: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() {
// ...
}