这可能是一个包含问题,我在整个代码中都遇到了这些错误,不仅是字符串标识符,例如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;
最佳答案
因此,我在没有自定义头文件的情况下按原样编译了您的代码,并且效果很好。基于此,我要保证您在以下头文件之一中存在问题:
#include "day.h"
#include "appointment.h"
#include "extendedAppointment.h"
#include "participant.h"
#include "calendar.h"
它可以是宏,未以分号终止的类/结构等。请检查这些内容。
最后,一些切线问题:
首先,用
using
头文件中的 namespace 是一个糟糕的主意。现在,包含头文件的所有文件中都带有using namespace std;
(这很糟糕)。您可能不想在每个包含stdafx.h
的文件中包含那么多头文件。其次,一旦删除该字符串,则
string
立即变得不确定(使用std::string代替)。最后,为什么您的
#define
以分号结尾?没必要。