Неопределенная ссылка на "winmain" при попытке компилировать реализацию класса - PullRequest
1 голос
/ 12 января 2020

Я практикуюсь с OOP в C ++. Проблема, над которой я работаю, требует 2 класса, один для пациента и другой для выполняемой медицинской процедуры. Я написал заголовок и файл реализации класса для класса пациента. Файл заголовка скомпилирован без проблем, но по какой-то причине файл .cpp продолжает давать мне:

неопределенная ссылка на 'winmain'. Идентификатор ошибки возвратил 1 статус выхода.

Я новичок в OOP и уже пытался просмотреть книгу, необходимую для занятий, и безуспешно ищу ответ.

Заголовочный файл:

#ifndef Patient_h
#define Patient_h
#include <string>

using std::string;
class Patient
{
    private:
        string name, address, phone, e_contact;
    public:
        Patient(string n = " ", string a = "", string p = "", string e_con = "")
            {
                name = n; address = a; phone = p; e_contact = e_con;
            }
        void setName();
        void setAddress();
        void setPhone();
        void setContact();
        string getName();
        string getAddress();
        string getPhone();
        string getContact();

};
#endif

И файл cpp:

#include "Patient.h"
#include <iostream>
using std::cout; using std::cin;
void Patient::setName()
{
    cout << "Enter the Patient's full name.  First, middle and last.\n";
    getline(cin, name);
    cin.ignore();
}
void Patient::setAddress()
{
    cout << "Enter the Patient's address.  Street, city and state + zipcode.\n";
    getline(cin,address);
    cin.ignore();
}
void Patient::setPhone()
{
    cout << "Enter the patient's phone number.\n";
    getline(cin,phone);
    cin.ignore();
}
void Patient::setContact()
{
    cout << "Please enter the patient's emergency contact name and phone.\n";
    getline(cin, e_contact);
    cin.ignore();
}
string Patient::getName()
{
    return name;
}
string Patient::getAddress()
{
    return address;
}
string Patient::getPhone()
{
    return phone;
}
string Patient::getContact()
{
    return e_contact;
}

1 Ответ

0 голосов
/ 13 января 2020

Проблема не в проблеме компиляции, а в проблеме компоновки.

Согласно вашим пояснениям у вас будет несколько файлов для компиляции:

 Patient.h
 Patient.cpp    --> Implementation --> object module 
 Procedure.h
 Procedure.cpp  --> Implementation  --> object module
 ...

После того, как все файлы скомпилированы и созданы соответствующие двоичные объектные модули, компоновщик соберет части вместе и создайте исполняемый файл.

Но чтобы создать исполняемый файл, компоновщик должен также знать, с чего должно начинаться выполнение программы. Это называется точкой входа.

В C ++ точкой входа обычно является функция main(). Если у вас его еще нет, чего-то не хватает для завершения sh процесса сборки.

В вашем случае компоновщик запрашивает функцию winmain. Это плохо для вас: это означает, что настройки вашего проекта сообщают IDE, что вы хотите создать приложение GUI для windows, а не приложение командной строки.

Поскольку вы используете cout и обычный консольный ввод / вывод, я думаю, что вы не собираетесь делать программу GUI и что GUI является неправильной настройкой. Вы должны найти, как изменить этот параметр в IDE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...