2012-06-12 32 views
6

oluşturmak için nasıl aşağıdaki satırı çalıştı:
static const const char* values[];
Ama VC++ uyarı C4114 üzerinde aşağıdaki uyarıyı alıyorum: Aynı tip eleme kereden fazla kullandı.
Doğru beyan nedir?

düzenleme: Sol aittir:
golconst char statik const dizi *

+0

Ne oluşturmak istiyorsunuz? Sabit karakterlere sabit bir dizi işaretçi? –

cevap

13

Siz yazdınız const const yerine Ayrıca

(eğer işaretçi ve const olarak yatan değerleri tanımlamak) static const char* const values[]; ait, bunu başlatmak gerekir:

static const char* const values[] = {"string one", "string two"};

+0

+1 ile aynıdır, Ancak, başlatma, bir sınıfa ait bir statik (statik) üyesi ise (benim tahminim) bağlama bağlıdır. bildirimde yapılabilir ... –

+0

Doğru bir şekilde anlayabiliyorum, ilk const dizge için ve ikincisi için mi? – Tommy

+7

'const' anahtar sözcüğünü açıklığa kavuşturmak için: A' const' her zaman soldaki "item" ile ilgilidir. Bunun istisnası, const, ifadedeki ilk kelime olduğunda, o zaman, ona doğru olan öğeyle ilgilidir. Yani, süper doğru olmak gerekirse, dize, sağdan sola okunabilen, statik char const * const değerleri [] 'olarak tanımlanacaktır: değerler, const karakterleri için const işaretlerinin bir dizisidir ve tüm bunlar statiktir. – AquilaRapax

4

fikri * her iki tarafında iki const s koymaktır
static const char* const values[]; 

deneyin c dizelerden oluşan bir değişmez dizi oluşturmaktır char (sabit karakter), sağdaki değer char* (sabit işaretçi karakterine) aittir

+2

Bir kenara göre, bu, "statik char const * const değerleri []' – Dennis