SORU
14 NİSAN 2010, ÇARŞAMBA


C dönüş "BOŞ" nesne arama sonucu bulunamadı eğer

C için oldukça yeni öğreniyorum ben yokken Java-izm bir sürü tasarım eğilimindedir. Neyse, Java, keşke sınıf bir 'arama' yöntemi bu dönüş bir nesne T Collection< T > eşleşen belirli bir parametre, I would return nesne ve nesne bulunamadı koleksiyonu yapardım dönüş BOŞ. Arama fonksiyonu sadece if(T != NULL) { ... } kontrol ederim o zaman

C , eğer nesne yok eğer öyle bir BOŞ iade edemeyeceğimi anlamış bulunuyorum. Ben sadece bir 'gösterge' tipi arama bildiren T nesne bulundu işlevi. iade etmek istiyorum Gerçekten olağanüstü bir durum değil, çünkü istisna istemiyorum.

class Node {
....

Attr& getAttribute(const string& attribute_name) const {
   //search collection
   //if found at i
        return attributes[i];
   //if not found
        return NULL;
}

private:
   vector<Attr> attributes;
}

CEVAP
14 NİSAN 2010, ÇARŞAMBA


C , başvuruları null olamaz. Eğer bir şey bulunursa boş iade isteğe bağlı olarak istiyorsanız, bir işaretçi, bir referans değil geri vermen gerekir:

Attr *getAttribute(const string& attribute_name) const {
   //search collection
   //if found at i
        return &attributes[i];
   //if not found
        return nullptr;
}

Eğer başvuru dönmekte ısrar edersen yoksa, o zaman eğer öznitelik buldu değil mi eğer bir istisna atmak gerekir.

(Bu arada, senin yöntemi const ve sigaraconst bir öznitelik dönme konusunda biraz endişeliyim. Felsefi nedenlerle, const Attr * dönen öneririm. Eğer siz de bu özniteliğin değiştirmek isteyebilirsiniz, olmayan-const bir yöntem olarak iyi olmayanconst bir öznitelik dönen aşırı yüklenebilir.)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EatingIn

    EatingIn

    12 EKİM 2013
  • Elly

    Elly

    3 EKİM 2005
  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006