ошибка: не было объявлено в этой области с переполнением стека

Я пытаюсь реализовать простой протокол для отправки электронных писем. До сих пор я реализовал четыре команды и серверный класс, который получает все команды и проверяет, находятся ли команды в правильном порядке. Однако, когда я создаю экземпляр класса сервера, он показывает ошибку: SMTPServer не был объявлен в этой области. Я не знаю, что еще делать. Любая помощь приветствуется, поскольку я не могу завершить свою программу без устранения этой ошибки.

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

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

#ifndef HELO_H_INCLUDED
#define HELO_H_INCLUDED

class SMTPServer
{
public: SMTPServer();

private: string newMessage;
private: string newRec;
private: string newSender;
private: string newData;// overload constructor
// public: SMTPServer(string, string, string, string);

void SMTPServer:: send(HELO h1);

};

#endif // HELO_H_INCLUDED

SMTPServer cpp

#include "SMTPServer.h"

SMTPServer::SMTPServer()
{
newMessage = NULL;
newRec = NULL;
newSender = NULL;
newData = NULL;
};

void SMTPServer:: send(HELO h1)
{

}

Основной класс

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

int main() {

string mes;
string rec;
string sen;
string dat;

SMTPServer test;

//cout << endl << "HELO message: " << test.send() << endl;

return 0;

}

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

1

Решение

Похоже, вы снова использовали охранников от HELO.h в SMTPServer.h, То есть они должны быть изменены на что-то вроде:

#ifndef SMTPSERVER_H_INCLUDED
#define SMTPSERVER_H_INCLUDED

...

#endif

Если вы используете одни и те же защитные элементы в обоих, только один из них может быть включен в другой файл. И на самом деле, SMTPServer.h сам включает в себя HELO.h, так что мгновенно делает свой собственный контент никогда не пройти этап предварительной обработки.

Если пока не ясно, просто прочитайте SMTPServer.h:

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

#ifndef HELO_H_INCLUDED

Итак, мы проверяем, если HELO_H_INCLUDED определено. Так как это только включено HELO.hи этот файл предположительно определяет HELO_H_INCLUDED, мы всегда будем говорить «Да, это определено!». Мы никогда не будем использовать содержание этого #ifndef,

1

Другие решения

  1. Вы можете инициализировать строку, как показано ниже:

    SMTPServer::SMTPServer()
    {
    newMessage = "";
    newRec = "";
    newSender = "";
    newData = "";
    }
    

    [/ NOEDIT]

  2. Изменить код ниже:

    void SMTPServer:: send(HELO h1);

    в

    void send(HELO h1);

  3. Удалить точку с запятой после:

SMTPServer::SMTPServer()
{
newMessage = NULL;
newRec = NULL;
newSender = NULL;
newData = NULL;
};

[/ NOEDIT]

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector