0

だから私はユニプロジェクトをやっていて、奇妙なエラーがポップアップするコンパイルしようとすると、それは循環依存関係からのものかもしれないと読んだことがありますが、私はチェックしましたが、ヘッダーコードは問題ではありません:

#ifndef __ScheduleHeader_H_INCLUDED__
#define __ScheduleHeader_H_INCLUDED__

#include "TrainStationHeader.h"

class Schedule
{
friend class ScheduleIterator;
  public:
    //get data functions
    std::string getFromCity() { return fromCity; }
    std::string getToCity() { return toCity; }
    std::string getTrainID() { return trainID; }
    std::string getDate();
    std::string getTime();
    std::string getTimeForTickets();
    std::string getPrice() { return price; }    

    //set data functions + validation on the input data
    bool setFromCity();
    bool setToCity();
void setDate();
    void setTime();
    bool setTrainID();
    void setPrice();

    std::string createScheduleLine();

private:
    int validateDate(struct tm,struct tm);
    int validateTime(struct tm,struct tm);

    std::string scheduleFileName;
    std::string fromCity;
    std::string toCity;
    struct tm dateAndTime;
    std::string trainID;
    std::string price;
};

#endif

別のクラスにプライベートとしてScheduleオブジェクトがあるため、友人を追加しました。コンパイル時のエラーは次のとおりです。

c:\program files (x86)\windows kits\8.0\include\um\schedule.h(60): error C2146: syntax         error : missing ';' before identifier 'Type'
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(60): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(61): error C2146: syntax error : missing ';' before identifier 'Offset'
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(61): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(68): error C2146: syntax error : missing ';' before identifier 'Size'
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(68): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(69): error C2146: syntax error : missing ';' before identifier 'Bandwidth'
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(69): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(70): error C2146: syntax error : missing ';' before identifier 'NumberOfSchedules'
1>c:\program files (x86)\windows kits\8.0\include\um\schedule.h(70): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

PS:MC VS 2012 を使用しています。

これがTrainStation.hです。これは、大部分のクラスで使用する関数とライブラリの単なる集まりです(ベストプラクティスではないことはわかっています):

#ifndef __TrainStation_H_INCLUDED__
#define __TrainStation_H_INCLUDED__

#include <iostream>
#include <string>
#include <fstream>
#include <locale>
#include <iomanip>
#include <ctime>
#include <cstdio>
#include <vector>

std::string removeWhiteSpace(std::string a);

//Resieves the file on wich to operate upon and what to search for.
//If it finds it it returns the line on wich it has been found ,if not returns -1
int checkContent(std::string FileName, std::string target);

//Give the Function the File Name with wich you would like to work and the target that             you would like to delete
//It works by copying everything exept the target string to another file then renames it and deletes the old file
int deleteContent(std::string File,std::string target);

void renameFile(std::string , std::string);

bool checkFileState(std::ifstream &file);
#endif
4

1 に答える 1

0

エラー メッセージは、VS または追加の SDK のインストールの一部である "C:\program files (x86)\windows kits\8.0\include\um\schedule.h" のエラーを示しています。まったく別のヘッダー ファイルを引用します。

エラーがわからない場合は、プリプロセッサの出力を求めて、それを読んで問題を確認してください。/SHOWINCLUDES も役立つ場合があります。

于 2013-06-30T14:12:52.670 に答える