コンパイラが私の下のコードを好まない理由を知ってもらえますか?エラーC2440: '初期化': 'const temp1'から 'temp2'に変換できません
私はVS2010を使用しています。私はC++ 11以上は使用できません。私は、ヘッダーファイル内のテンプレート関数定義を持っており、私は別のcppファイルからその関数を呼び出します。
がheader.h
typedef struct temp1
{
int x;
double d;
}
temp1;
typedef struct temp2
{
double d;
int x;
}
temp2;
class A
{
public:
A();
~A();
public:
template<typename T1> void foo(const T1& xx, int x)
{
if(1 == x)
{
temp1 t1 = xx;
// Do some operation
}
if (2 == x)
{
temp2 t2 = xx;
// Do some operation
}
}
};
Source.cpp
int _tmain(int argc, _TCHAR* argv[])
{
A temp;
temp1 t1;
t1.x = 10;
t1.d = 10.10;
temp2 t2;
t2.x = 20;
t2.d = 20.20;
temp.foo(t1,1);
temp.foo(t2,2);
return 0;
}
コンパイラによって報告されたエラー:
Error 1 error C2440: 'initializing' : cannot convert from 'const temp1' to 'temp2'
Error 2 error C2440: 'initializing' : cannot convert from 'const temp2' to 'temp1'
説明をありがとう –