Bu koda sahibim:
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
Bunu şu biçimde istiyorum:
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
Bunu nasıl yapabilirim? Doğru sözdizimi nedir?
Neden işlev sınıf decl içinde tanımlanmıyor (bkz. Codepad.org/wxaZOMYW )? Fonksiyon
—
decl'i
@hiobs: FWIW, beyanı bir CPP dosyasına taşıyabilirsiniz. Bununla birlikte, biraz bilgisayar korsanlığı yapmak için bunu yalnızca bir kez yaptım. Bu durumda, bunun nasıl yapılacağını bilmek önemlidir.
—
Thomas Eding
Bazen işlev gövdesi tarafından ihtiyaç duyulan bağımlılıkların tanımlanmasından sonra işlev tanımını sınıfın dışına taşımak gerekir. Bu, A sınıfı B sınıfını ve B de A'yı kullandığında gerçekleşir. Bu durumda, A ve B'yi bildirir, ardından A ve B yöntemlerini tanımlarsınız.
—
Wheezil