Вопрос:
это, вероятно, проблема включения, я получаю эти ошибки по всему коду, а не только для идентификатора строки, например 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 пространство имен в файле заголовка – ужасная идея. Любой файл, который содержит ваш заголовок, теперь имеет using namespace std; в нем (это плохо). Вероятно, вы не хотите включать в него много файлов заголовков, в которые входит stdafx.h.
Во-вторых, после удаления, тогда string сразу становится undefined (вместо этого используйте std::string).
Наконец, почему ваш #define закончился полуколонами? Нет необходимости в этом.