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的 s 以分号结尾?没必要。

于 2012-05-14T19:01:27.087 回答