C のコードを C++ 言語に変換しようとすると、エラーが発生しますが、問題の原因がわかりません。
ここにソースコードがあります: http://pastebin.com/PnKvgNsR
エラーメッセージは次のとおりです。
call of overloaded ‘dateTimeToMinutes(char*&)’ is ambiguous
g++4.7.1 でコンパイル (c++11 標準を含む)。
C のコードを C++ 言語に変換しようとすると、エラーが発生しますが、問題の原因がわかりません。
ここにソースコードがあります: http://pastebin.com/PnKvgNsR
エラーメッセージは次のとおりです。
call of overloaded ‘dateTimeToMinutes(char*&)’ is ambiguous
g++4.7.1 でコンパイル (c++11 標準を含む)。
RabQavSystem
ヘッダーでは、名前空間で 2 つの関数を宣言します。
namespace RabQavSystem {
int dateTimeToMinutes(DateTime datetime);
int dateTimeDifference(DateTime datetime1, DateTime datetime2);
}
ソース ファイルでは、グローバル名前空間で新しい関数を宣言および定義します。これらは、ヘッダーで宣言された関数の定義ではなく、別の名前空間の別の関数の定義です。
int dateTimeDifference(DateTime datetime1, DateTime datetime2) {
// ....
}
int dateTimeToMinutes(DateTime datetime) {
// ....
}
次にusing namespace RabQavSystem;
、他の関数名をグローバル名前空間にプルして、あいまいさを引き起こします。
これを修正するには、グローバル名前空間ではなく、自分の名前空間で関数を定義します。
int RabQavSystem::dateTimeDifference(DateTime datetime1, DateTime datetime2) {
^^^^^^^^^^^^^^
}
int RabQavSystem::dateTimeToMinutes(DateTime datetime) {
^^^^^^^^^^^^^^
}
cpp ファイルで、dateTimeXXX 関数の定義に名前空間 RabQavSystem を指定します。
int RabQavSystem::dateTimeDifference(DateTime datetime1, DateTime datetime2)
{
...
}
int RabQavSystem::dateTimeToMinutes(DateTime datetime)
{
...
}