Beklendiği gibi çalışmıyor, yapıcı ile ilgili bir sorunum var.Oluşturucu kullanılabilir nesneyi iade etmiyor
Ben böyle benim sınıf başlatmak için çalışırsanız, bu iş olacak ve ben bir kullanışlı nesneyi almak: Ben aşağıdaki gibi bir sınıf (eşdeğer olmalıdır) inşa etmeye çalışırsanız, ancak
vector<float> v;
MyClass<2> a(v);
sonuç oldukça beklenmedik. Programı derlerken veya çalıştırırken hata mesajı/uyarısı yoktur. Ancak bu değişkeni bir yerde kullanmaya ve yöntemlerini çağırmaya çalışırsanız (örneğin a.doSomething()), çökecektir.
Kullanıldıysa beni bilgilendirmek için kurucunun içine biraz kod koydum. Bu durumda, kurucunun içinde hiçbir kodun gerçekte yürütülemediği ortaya çıktı.
MyClass<2> a(vector<float>());
Bu yüzden neden böyle olduğunu merak ediyorum? 2. bildirim yasadışı mı?
DÜZENLEME: sınıfının bazı kodlar
template <int x>
class MyClass {
public:
vector<float> v;
MyClass<x>(vector<float> v1) {
v = v1;
}
};
The clas s aynı türde bir kamu değişkenine sahiptir. Bu yüzden sadece argümanı değişkene atayacaktır. – dominos
Bazı kodları yayınla MyClass! – Nawaz
Sınıfın bazı kodlarını yayınladım. Bir referans veya işaretçi değil, sadece bir değişken. – dominos