Я новичок на C++, и, похоже, я получаю эту ошибку. Это очень расстраивает, так как это полностью препятствует моей работе в этом задании. Я понимаю принцип ошибки, но функция определена до ее вызова, поэтому я этого не понимаю.LNK2019: неразрешенный внешний символ; я не обращаю внимания?
Я получаю следующее сообщение об ошибке:
Error 3 error LNK2019: unresolved external symbol "public: void __thiscall Driver::mainMenu(void)" ([email protected]@@QAEXXZ) referenced in function "public: void __thiscall Driver::customerMenu(class std::vector<class Customer,class std::allocator<class Customer> >)" ([email protected]@@[email protected]@@[email protected]@@@[email protected]@@[email protected]@@Z) H:\Uni\Year 2\FPC++\Tutorial 4\SimpleSavings\SimpleSavings\Main.obj Assignment
Из этого кода:
#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;
static Driver d;
void mainMenu() {
while (true)
{
vector<Customer> customers;
if (customers.size() == 0)
{
cout << "________________________" << endl;
cout << "//CURRENT CUSTOMER: NO CUSTOMERS" << endl;
cout << "//CURRENT ACCOUNT: NO ACCOUNTS" << endl;
} else if (customers.at(customerIndex).getAccounts().size() == 0)
{
cout << "________________________" << endl;
cout << "//CURRENT CUSTOMER: " << customers.at(customerIndex).getName() << endl;
cout << "//CURRENT ACCOUNT: NO ACCOUNTS" << endl;
} else
{
cout << "________________________" << endl;
cout << "//CURRENT CUSTOMER: " << customers.at(customerIndex).getName() << endl;
cout << "//CURRENT ACCOUNT: " << customers.at(customerIndex).getAccounts().at(accountIndex).getAccountNum() << " (" << customers.at(customerIndex).getAccounts().at(accountIndex).getType() << ")" << endl;
}
cout << "//MAIN MENU " << endl;
cout << "||Customers (1) " << endl;
cout << "||Accounts (2) " << endl;
cout << "||Transactions (3) " << endl;
cout << "||";
int mainMenuChoice;
cin >> mainMenuChoice;
if (mainMenuChoice == 1)
{
d.customerMenu(customers);
}
int c;
cin >> c;
}
}
//tier 1
void Driver::customerMenu(vector<Customer> customers)
{
cout << "________________________" << endl;
cout << "//CUSTOMER MENU" << endl;
cout << "||Create new customer (1) " << endl;
cout << "||Select a customer (2) " << endl;
cout << "||List all customers (3) " << endl;
cout << "||Delete a customer (4) " << endl;
cout << "||Back (5)" << endl;
cout << "||";
int customerMenuChoice;
cin >> customerMenuChoice;
if (customerMenuChoice == 1)
{
createCustomer(customers);
} else if (customerMenuChoice == 2)
{
if (customers.size() == 0)
{
{
cout << "________________________" << endl;
cout << "//CUSTOMER SELECTIONS" << endl;
cout << "||There are no customers! " << endl;
customerMenu(customers);
}
} else
{
selectCustomer(customers);
}
} else if (customerMenuChoice == 3)
{
listCustomers(customers);
} else if (customerMenuChoice == 4)
{
cout << "||TBI"<< endl;
} else if (customerMenuChoice == 5)
{
mainMenu();
}
}
Неразрешенный символ: public: void __thiscall Driver :: mainMenu (void) 'not' public: void mainMenu (void) '. Поэтому компилятор ожидает функцию 'mainMenu' в классе' Driver'. Ваше определение 'mainMenu' отсутствует в классе. Это глобально. Я уверен, что вы объявили его как функцию-член в заголовке. Это его реализация, которую ищет компилятор. – nakiya
@nakiya: Вы должны опубликовать эту информацию в качестве ответа. Он читается как один, за исключением «Я уверен», который запускает последнее предложение. Я бы изменил это на «Вероятно». :-) –
@KenWhite: Хорошо, буду. Благодарю. – nakiya