(Microsoft Visual C++ 2005 Express) kod parçası derleme:X türünden x türüne dönüştürülemiyor?
'=': cannot convert from 'A (__cdecl *)(void)' to 'A (__cdecl *)(void)'
bana mantıklı değildir:
struct A
{
template< typename T > static A Foo(void) { return A(); }
struct S
{
template< typename T > static S GetInstance(void)
{
S Result;
Result.m_funcFoo = &A::Foo<T>;
return Result;
}
A (*m_funcFoo)(void);
};
};
int main(int argc, char* argv[])
{
A::S::GetInstance<int>();
}
Bir C2440 hatası alıyorum. Hata metninde adlandırılan iki tür açıkça aynıdır. Ayrıca, Foo
'un dönüş değeri int
olarak değiştirilirken, böyle bir hata yoktur.
Hata mı, yoksa yanlış bir şey mi yapıyorum?
DÜZENLEME: Yani, eğer bir hata varsa, bunu nasıl çözeceğini bilen var mı? Belki de oyuncular kullanarak? Derlemek için bu kod gerekiyor ...
Onun bir hata! [....] –
İlk başta, '* A (A :: *) (void)' 'farklı * A (*) (void)' yüzünden olduğunu düşündü ama Bunu böyle yapamazdım. – Griwes