Bir işlev işaretçisini bir şablon işlevine depolayan bir şablon sınıfı oluşturmaya çalışıyorum ancak Visual Studio 2008'de bir derleme hatası oluşturdum. Basitleştirilmiş bir test durumu oluşturdum Bunun için hala VS2008'de derlenemeyen, fakat denediğim çevrimiçi Comeau ve çevrimiçi GCC derleyicileri üzerinde başarılı bir şekilde derlemiş görünen (aşağıya bakınız).Visual Studio 2008'de işaretçiye şablon işleviyle hata derleme
görüyorum hatadır:
error C2436: 'func' : member function or nested class in constructor initializer list
temp.cpp(21) : while compiling class template member function 'test_class<T>::test_class(T (__cdecl &))'
1> with
1> [
1> T=int (const int &)
1> ]
fonksiyon çalışır olmayan bir şablonu kullanarak aynı test. Kısacası, herkes sorun için bir çözüm biliyor mu, yoksa VS2008 bunun için bir çeşit farklı sözdizimi bekliyorsa?
sayesinde
Jerry
template<class T>
T template_function(const T& arg)
{
return arg;
}
int non_template_function(const int& arg)
{
return arg;
}
template<class T>
class test_class
{
public:
test_class(const T& arg) : func(arg) {}
private:
T func;
};
template<class T>
void create_class(const T& arg)
{
new test_class<T>(arg);
}
int main()
{
create_class(&template_function<int>); //compile fails unless this is commented out
create_class(&non_template_function);
return 0;
}
+1. Yetkili olarak cevaplanamaz ama hata mesajında __cdecl, bağlantılarla ilgili olarak alarm zillerini çalar. – Flexo