私は問題を抱えています。あなたが私を助けてくれることを願っています。Linux で実行する C++ プログラムを作成しています。私は 2 つのクラスを定義しました。メインのクラスは Downloader と呼ばれ、次のようになります。
#ifndef __DOWNLOADER_H__
#define __DOWNLOADER_H__
#include "configDownloader.h"
#include "mailServer.h"
#include <logger.h>
using namespace ObjectModel;
namespace Downloader
{
class Downloader
{
private:
...
MailServer *m_mailServer;
public:
Downloader(char* configFileName);
...
};
}
#endif
このクラスのコンストラクターで、同じ名前空間に定義したクラス MailServer の新しいインスタンスを作成しようとしました。MailServer のコードは次のようになります。
#ifndef __MAILSERVER_H__
#define __MAILSERVER_H__
#include <stdio.h>
#include <list>
#include <mail.h>
using namespace std;
using namespace ObjectModel;
namespace Downloader
{
class MailServer
{
private:
list<Mail> m_mails;
char *m_username;
char *m_password;
public:
MailServer();
~MailServer();
void Open(char *username,char *password);
bool SaveEmails(char *pathFiles);
void Close();
};
}
#endif
このクラスのコンストラクターは .cpp ファイルに正しく定義されており、すべてが正しいようです。問題は、Downloader のコンストラクター内で MailServer の新しいインスタンスを作成しようとすると、コンパイラーが「エラー: タイプが必要です」と表示することです。
#include <stdio.h>
#include "downloader.h"
#include <unistd.h>
namespace Downloader
{
Downloader::Downloader(char* fileName)
{
this->m_config = new ConfigDownloader(fileName);
this->m_log = new Logger("Log",LOG_LEVEL_INFO,0);
this->m_mailServer = new MailServer();//the compiler shows the error right here
}
...
何か案は?コンパイラが古すぎる可能性があることをどこかで読みましたが、メイクファイル内でのコーディングはあまり快適ではありません。