SORU
31 EKİM 2012, ÇARŞAMBA


Nasıl geçici izin vermemek için

Bir sınıf Foo için, isim vermeden inşa izin vermemek için bir yolu var mı?

Örneğin:

Foo("hi");

Ve sadece sana bir isim versem izin, aşağıdaki gibi mi?

Foo my_foo("hi");

Bir ömür boyu sadece bir deyim olduğunu, ve ikincisi kapsayan taşıdır. Benim kullanım durumunda, Foo yapıcı ve yıkıcı arasındaki zaman ölçme. Ben asla yerel değişken gösterdiğine göre, ben sık sık onu koymak, ve yanlışlıkla ömür boyu değiştirmek unutmayın. Bir kez hata yerine derlemek istiyorum.

CEVAP
31 EKİM 2012, ÇARŞAMBA


Makro tabanlı başka bir çözüm:

#define Foo class Foo

Deyim Foo("hi"); kötü oluşan class Foo("hi");, genişler; ama Foo a("hi") doğru olan class Foo a("hi"), genişler.

Bu kaynak ve ikili uyumlu mevcut (doğru) her iki kodu bir avantaja sahiptir.(Bu iddia tamamen doğru - lütfen Johannes Schaub Yorum ve ardından gelen tartışma aşağıya bakın: . ben^>"Nasıl mevcut kaynak kodu ile uyumlu olduğunu biliyorsun? Önceden derlenmiş güzel ve miscompiles! şimdi hangi arkadaşını başlık içerir ve void f() { int Foo = 0; } Aynı zamanda, Foo sınıfının bir üye işlevi tanımlayan her satırı başarısız: sınıf void Foo::bar() {}")

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C++

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EvilControllers

    EvilControll

    20 Ocak 2008
  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • TotalxLuna

    TotalxLuna

    27 Kasım 2011