标识符"客户菜单"未定义
identifier "customerMenu" is undefined
我目前正在编程一个赋值,而且我对C++基本上是新手。不过,我确实理解,在使用函数之前,您需要定义一个函数,或者在.cpp文件中使用函数之前使用头文件来原型化这些函数。
然而,执行这两种操作中的任何一种都仍然会抛出方法未定义的错误。
这是我凌乱的头文件。。。
#ifndef DRIVER_H
#define DRIVER_H
#include "Account.h"
#include <vector>
#include <iostream>
#pragma once
using namespace std;
class Driver {
private:
public:
void prevAccount(vector<Customer> customers);
void nextAccount(vector<Customer> customers);
void accountActions(vector<Customer> customers);
void listCustomerAccounts(vector<Customer> customers);
void selectAccount(vector<Customer> customers);
void createAccount(vector<Customer> customers);
void prevCustomer(vector<Customer> customers);
void nextCustomer(vector<Customer> customers);
void customerActions(vector<Customer> customers);
void listCustomers(vector<Customer> customers);
void selectCustomer(vector<Customer> customers);
void createCustomer(vector<Customer> customers);
void customerMenu(vector<Customer> customers);
void main();
};
#endif
这是驱动程序的.cpp文件,它基本上运行程序。。。
#include "Account.h"
#include "Customer.h"
#include "Driver.h"
#include "JuniorCurrentAccount.h"
#include "CorporateSavingsAccount.h"
#include "StudentSavingsAccount.h"
#include "CurrentAccount.h"
#include "Transaction.h"
#include <stdlib.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
static int customerIndex = 0;
static int accountIndex = 0;
static int accNum = 1;
//tier 5
void Driver::accountActions(vector<Customer> customers) { //code }
void Driver::prevAccount(vector<Customer> customers) { //code }
//tier 4
void Driver::createAccount(vector<Customer> customers) { //code }
void Driver::selectAccount(vector<Customer> customers) { //code }
void Driver::listCustomerAccounts(vector<Customer> customers) { //code }
//tier 3
void Driver::customerActions(vector<Customer> customers) { //code }
void Driver::nextCustomer(vector<Customer> customers) { //code }
void Driver::prevCustomer(vector<Customer> customers) { //code }
// tier 2
void Driver::createCustomer(vector<Customer> customers) { //code }
void Driver::selectCustomer(vector<Customer> customers) { //code }
void Driver::listCustomers(vector<Customer> customers) { //code }
//tier 1
void Driver::customerMenu(vector<Customer> customers) { //code }
void main()
{
vector<Customer> customers;
cout << "________________________" << endl;
cout << "//MAIN MENU " << endl;
cout << "||Customers (1) " << endl;
cout << "||";
int mainMenuChoice;
cin >> mainMenuChoice;
if (mainMenuChoice == 1)
{
customerMenu(customers);
}
}
.cpp文件的最底部是错误抱怨的地方,我真的不明白为什么会出现这个错误,因为我想我已经涵盖了定义。
为了节省空间,我已经从方法体中取出了代码,但它们本质上是执行一个函数或调用更高级别的方法(1调用2,2调用3)。
如果您发布了错误消息的文本,会有所帮助,但问题似乎是您在一个名为Driver的类中定义了函数,但主函数中没有Driver对象。
试试这个
int main()
{
Driver driver;
vector<Customer> customers;
cout << "________________________" << endl;
cout << "//MAIN MENU " << endl;
cout << "||Customers (1) " << endl;
cout << "||";
int mainMenuChoice;
cin >> mainMenuChoice;
if (mainMenuChoice == 1)
{
driver.customerMenu(customers);
}
}
customerMenu
不是一个独立的函数,它是Driver
类的一个成员。这意味着您首先需要一个Driver
对象实例,然后调用上的函数
Driver myDriver;
myDriver.customerMenu(customers);
如果你不明白为什么你需要这个,我想你可能想回到一些基本的教程。
作为一个额外的提示:在基本知识之后,您可能想了解如何通过引用传递参数。因为现在您正在通过值传递customers
向量,这意味着它将为您进行的每个函数调用复制。这也意味着每个函数都有自己的副本,并且将对此私有副本进行修改,而不是作为参数传入的向量。
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- c++11评估顺序(未定义的行为)
- 使用mysql c++连接器的未定义引用
- 从python调用openMP共享库时,未定义opnMP函数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 具有外部"c"和程序集的未定义函数
- 此增量后语句是否会导致未定义的行为?
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在C++中使用内联方法时出现未定义的符号错误
- 标识符"客户菜单"未定义