2016-10-03 12 views
-3

から文字列を返します私のコンパイラ(Visual Studio 2012)は、私が関数getCurrentTimeStamp()を返した瞬間にエラーを吐き出しています。std::stringオブジェクトを返します。エラーはすべて構文上の問題を指していますが、明らかではありません。誰がなぜこのような場合があるのか​​理解していますか?私は2つのファイルを持っている静的関数

更新:ここに(いくつかの)エラーがあります。

エラー6エラーC2064:用語は0 引数cを取る関数に評価しません:\ユーザーはアンソニー\ドキュメントを\ \コード\ consoleapplication1 \ datetime.cpp 21 1 ConsoleApplication1

エラー1エラーC2146:構文エラー: ';'がありません前の識別子 'getCurrentTimeStamp' c:¥users¥anthony¥documents¥code¥consoleapplication1¥datetime.h 5 1 ConsoleApplication1

エラー7エラーC2146:構文エラー: ';'が見つかりません。識別子の前に 'getCurrentTimeStamp' C:\ユーザーはアンソニー\ドキュメントを\ \コード\ consoleapplication1 \ datetime.h 5 1 ConsoleApplication1

エラー5エラーC2371: 'のDateTime :: getCurrentTimeStamp':再定義; 異なる基本 タイプCは:\ユーザーは、アンソニー\ドキュメントを\ \コード\ consoleapplication1 \ datetime.cpp 10 1 ConsoleApplication1

+1

必要に応じて、あなたは単に 'の#include 'と 'のstd :: STRING'を使用する#include mascoj

+0

が見つかりませんか? –

+1

エラーの内容を教えてください。 – Galik

答えて

2

ヘッダファイル、このような特に単純なもの、ステップ1での問題を診断しようとしていますコンパイラが見ているものを試してみることです。

#includeコンパイラはそれを見ていないので、代わりにコンパイラは、あなたが含まれるようにしようとしているファイルの前処理された出力を見て、プリプロセッサディレクティブです。

は、だからあなたのコードは次のようになります:

#include "stdafx.h" 

    //#include "DateTime.h" 
    class DateTime 
    { 
    public: 
     static string getCurrentTimeStamp(); 
    }; 
    //#include "DateTime.h" 

    #include <ctime> 
    #include <chrono> 
    #include <iostream> 
    #include <string> 
    using namespace std; 

    string DateTime::getCurrentTimeStamp() 
    { 
     return ""; 
    } 

http://rextester.com/MODV66772

私がしようとRexTesterのオンラインのVisual Studioでこれをコンパイルし、私はあなたのstdafx.h ISN」ことを私に言って、非常に異なるエラーが発生します空ではありません。

私はコード少し変更した場合:今

//#include "stdafx.h" 

    //#include "DateTime.h" 
    #include <string> 

    class DateTime 
    { 
    public: 
     static std::string getCurrentTimeStamp(); 
    }; 
    //#include "DateTime.h" 

    #include <ctime> 
    #include <chrono> 
    #include <iostream> 
    #include <string> 
    using namespace std; 

    string DateTime::getCurrentTimeStamp() 
    { 
     return ""; 
    } 

これをあなたが報告されたエラー/警告なしでコンパイル:http://rextester.com/PXE62490

変更:

  • は、ヘッダファイルに含めるをヘッダはそれに依存するため、stringの代わりにstd::stringを使用してください。

C++コンパイラはシングルパスコンパイラなので、std名前空間が密であるため、ヘッダファイルは、後でusing namespace stdを行うことを意図していることを知ることができない、そしてそれがなかった場合でも、それはひどい練習です人口が多い。

どこにでもstd::と入力することができない場合は、usingなど必要な名前を入力してください。

using std::string; // string no-longer needs to be std::string 
+0

'DateTime.h'が' stdafx.h'に含まれていた可能性はありますか? –

関連する問題