2

これはおそらくインクルードの問題です。たとえばerror C2146: syntax error : missing ';' before identifier 'getName'、文字列識別子だけでなく、コード全体でこれらのエラーが発生します。error C2146: syntax error : missing ';' before identifier 'name'

クラスの例を次に示します。

#include "stdafx.h"

class participant
{
public:
participant(int id, string name);
~participant(void);

int getId();
string getName();

private:
        int id;
    string name;
};

これが私のstdafx.hファイルです:

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <list>
#include "day.h"
#include "appointment.h"
#include "extendedAppointment.h"
#include "participant.h"
#include "calendar.h"
using namespace std;

#define no_such_appointment_error 20;
#define conflicting_appointments_error 21;
#define noSuchDayError 22;
#define incorrectAppointmentError 23;
4

1 に答える 1

7

だから私はあなたのカスタムヘッダーファイルなしで投稿されたようにあなたのコードをコンパイルしました、そしてそれはうまくいきました。これに基づいて、次のヘッダーファイルのいずれかに問題があることに賭けます。

#include "day.h"
#include "appointment.h"
#include "extendedAppointment.h"
#include "participant.h"
#include "calendar.h"

マクロ、セミコロンで終了していないクラス/構造体などである可能性があります。それらを確認してください。

最後に、いくつかの接線の問題:

まず、usingヘッダーファイルの名前空間はひどい考えです。ヘッダーを含むすべてのファイルにヘッダーが含まれるようusing namespace std;になりました(これは悪いことです)。を含むすべてのファイルに、それほど多くのヘッダーファイルを含めたくない場合がありますstdafx.h

次に、それを削除するとstringすぐに未定義になります(代わりにstd :: stringを使用してください)。

最後に、なぜあなた#defineはセミコロンで終わっているのですか?その必要はありません。

于 2012-05-14T19:01:27.087 に答える