gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:46:58 25 4
gpt4 key购买 nike

这是我的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()'

最佳答案

选项 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() {
// ...
}

关于c++ - 编译 g++ 时不在范围内声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40099098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com