C ++ MS Visual Studio ошибка "ссылка в функции publi c: void __thiscall ..." - PullRequest
0 голосов
/ 18 марта 2020

Я получаю следующую ошибку при попытке запустить проект C ++ в VS

Мой главный. cpp (Банкомат. cpp)

#include <iostream>
#include <fstream>
#include <string>
#include "Account.h"
using namespace std;

class options
{
    private:
        char user_chose;
        int id;
        int pass;

    public: 

        void login()
        {
            // Get credentials
            cout << "Please enter your user id: ";
            cin >> id;
            cout << "Please enter your password: ";
            cin >> pass;

        }

        void quit()
        {
            cout << "quiting...";
        }

        void IntroMenu()
        {
            cout << "Please select an option from the menu below :" << endl;
            cout << "l -> Login" << endl;
            cout << "c -> Create New Account" << endl;
            cout << "q -> Quit" << endl;
            cout << "> ";
            cin >> user_chose;

            switch (user_chose)
            {
                case ('l'):
                case ('L'):
                    login();
                    break;

                case ('c'):
                case ('C'):

                    Account i;
                    i.createAccount();
                    break;

                case ('q'):
                case ('Q'):
                    quit();
                    break;

                default:
                {
                    cout << "\n***Invalid option***\n" << endl;
                    IntroMenu(); //Recall function
                }
            };
        };
};

int main()
{
    cout << "Hi!Welcome to the ATM Machine!" << endl;
    options start;
    start.IntroMenu();

    return 0;
}

Мой заголовок (Account.h)

#ifndef ACCOUNT_H_INCLUDED
#define ACCOUNT_H_INCLUDED

class Account
{
    public:
        void createAccount();
};

#endif

(Account. cpp)

#include "Account.h"
using namespace std;

Account::createAccount();
void Account::createAccount() 
{
    //Save account on database(txt file)

    cout << "\nAccount created successfully\n" << endl;
}

Ошибка 1

LNK2019 неразрешенный внешний символ "publi c: void __thiscall Account :: createAccount (void)" (? createAccount@Account@@QAEXXZ), на который имеется ссылка в функции "publi c: void __thiscall options :: IntroMenu (void) "(? IntroMenu@options@@QAEXXZ)

Ошибка 2

LNK1120 1 неразрешенный внешний вид

Заранее спасибо!

1 Ответ

0 голосов
/ 18 марта 2020

В вашем cpp файле:

#include "Account.h"
using namespace std;


Account::createAccount(); // remove this


void Account::createAccount() 
{
    cout << "\nAccount created successfully\n" << endl;
}

После удаления этой строки ваша программа должна запуститься.

РЕДАКТИРОВАТЬ

После этого исправления это прекрасно работает для меня.

Вы можете попробовать переместить

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

на Account.h и удалить остальные using namespace std;, оставив только #include <Account.h> в main().

Это указывает на отсутствующие библиотеки, поэтому проверьте также, есть ли файлы классов Account в каталоге проекта root.

Если это не решает проблему, взгляните на C ++ ошибка компиляции (LNK1120 и LNK2019) с Visual Studio .

...