2011-12-18 15 views
6

Çeşitli sınıflardan oluşan bir cpp genelinde bir (const) değişkeninin bulunması gereken bir gereksinim var. Sorunu çözmek için bir ad alanı kullanmaya karar verdim, ancak aşağıdakiler hakkında emin değilim:C++ ad alanı ve statik değişkenler

  • Bu değişkeni statik olarak tanımlamam gerekir mi?
  • Değişken durağan yapmamayı ancak adsız bir ad alanıyla devam edersem, doğru muyum?
+0

Sınıflar/işlevler dışında, üstte bildirmeyi denediniz mi? (Statik ofc olmadan) – neeKo

+2

Statik yapmaktan kaçınmak için bir sebep var mı? – tpg2114

+1

Eğer 'const' ise, dolaylı olarak statiktir. Statik olmayan yapmak için 'extern const' kullanmalısınız. –

cevap

6
  1. Statik olarak değişken tanımlamak gerekir, ya da anonim bir ad alanında değil yoktur. Bununla birlikte, bu nesneyi tanımlandığı dosyanın dışında kullanmıyorsanız, ad alanı kirliliğini ve hız bağlantılarını azaltmak için (linker tarafından kaç tane sembolün dikkate alınması gerektiğine bakarak) iyi bir fikirdir.
  2. Anonim bir ad alanında bir değişken bildirirseniz, etkin bir şekilde statik olacaktır. Aslında onu da statik yapmaya gerek yok (eğer istersen yapabilirsin). Anonim ad alanlarının avantajı, statik değişkenler ve fonksiyonların yanı sıra türleri (sınıflar, yapılar, enumlar, yazım hataları) da tanımlayabilirsiniz.
+0

Teşekkürler, bu çok açıktı. –