2016-06-22 15 views
-1

私のプロジェクトの1つでは、このコードは問題なくコンパイルされます。C++エラーを与える単純なコードC4430とC2143

しかし、別のプロジェクトでは、同じファイルを使用しているため、コンパイルされません。私はVS2012を使用しており、C/C++のプロパティは2つのプロジェクト間で同じです。私はここで検索しましたが、何も見つかりませんでした。どんな助けもありがとう!

ヘッダファイル:

#include <vector> 

extern void split(const wstring &s, WCHAR c, vector<wstring>& v); 

C++ファイル:

void split(const wstring& s, WCHAR c, vector<wstring>& v) 
{ 
    string::size_type i = 0; 
    string::size_type j = s.find(c); 

    while (j != string::npos) { 
    v.push_back(s.substr(i, j-i)); 
    i = ++j; 
    j = s.find(c, j); 

    if (j == string::npos) 
     v.push_back(s.substr(i, s.length())); 
    } 
} 

これは私が関数を呼び出す方法です。ここで

wstring csToken; 
vector<wstring> vProductVersion; 
TCHAR *sProductVersion = tcalloc(64); 
StringCchCopy(sProductVersion,64,L"3.3.422"); 

// Put the string into a vector array. 
csToken.assign(sProductVersion); 
split(csToken, '.', vProductVersion); 

は、コンパイラが生成するエラーです:

1>c:\\projects\\functions.h(5): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\\projects\\functions.h(5): error C2143: syntax error : missing ',' before '&' 
+0

明らかに_something_は異なっており、それがここから来ていることがわかります! –

答えて

3

あなたは含まれている場合、それが複数回含まれないようにガードを追加するために、ヘッダーも

#pragma once 
#include <string> 
#include <vector> 

extern void split(const std::wstring &s, WCHAR c, std::vector<std::wstring>& v); 

良いにwstringのの前に名前空間を追加する必要があります。 (#pragma once

+0

ありがとうございました!解決済み。質問 - 何回も含まれていないとはどういう意味ですか? – JeffR

+0

プラグマは、ヘッダが複数回含まれないようにします。例えば。ヘッダーを含む2つのファイルがあり、両方のファイルが含まれている場合は、そのファイルは1回のみ含まれます。 –

関連する問題