2016-03-27 21 views
1

burada gösterildiği gibi karakter dizisi bir yapı içinde tanımlanmıştır değerleri vermek: başka bir işlev içinde önceden tanımlanmış bir 2-D karakter dizisi

struct munchkin_grid_type 
{ 
    char grid[5][5]; 
}; 

, değişken bu yeni tip olarak tanımlanır, ve istediğim İçinde char dizi doldurdu:

munchkin_grid_type munchkin_grid; 

munchkin_grid.grid[5][5] = 
{ 
     { 'a', 'b', 'c', 'd', 'e' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { '1', '2', '3', '4', '5' } 
}; 

alıyorum hataları şunlardır:

  • hata C2440: '=': fro dönüştüremiyorsa 'Char'

  • IntelliSense için m 'başlatıcı listesi': çok fazla başlatıcısı

std başvurmadan bu 2-B dizide içine bu değerleri koymak do Nasıl :: dizi/vektör değerleri türleri? Ben sadece normal bir 2D karakter dizisi istiyorum.

cevap

1

yerine

munchkin_grid_type munchkin_grid; 

munchkin_grid.grid[5][5] = 
{ 
    { 'a', 'b', 'c', 'd', 'e' }, 
    { ' ', ' ', ' ', ' ', ' ' }, 
    { ' ', ' ', ' ', ' ', ' ' }, 
    { ' ', ' ', ' ', ' ', ' ' }, 
    { '1', '2', '3', '4', '5' } 
}; 

ait

munchkin_grid_type munchkin_grid = 
{ 
    { 
     { 'a', 'b', 'c', 'd', 'e' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { '1', '2', '3', '4', '5' } 
    } 
}; 

EDIT yapmak - Bunun temelini açıklamak istediği gibi.

Esasen, bu, bir başlatıcı ile tek bir struct named munchkin_grid`in bir tanımıdır. Bunu anlamak için parantezlerden çıkın. char

tek bir dizi char bir iki boyutlu dizi {} başka iç içe getirmektedir

char x[5] = {'a', 'b', 'c', 'd', 'e'}; 

gibi bir başlangıç ​​durumuna olacaktır. Bir 5x5 ile daha az açıktır beri

char x[2][5] = { 
    {'a', 'b', 'c', 'd', 'e'}, 
    {'1', '2', '3', '4', '5'} 
    }; 

Ben, senin örnekten ilk boyut değiştirdik hangi yöne başlangıç ​​noktaları için boyut çalıştırın. Boyut değiştirilirse, başlatıcının da değişmesi gerekir, örneğin;

char y[5][2] = { 
    {'a', 'b'}, 
    {'c', 'd'}, 
    {'e', '1'}, 
    {'2', '3'}, 
    {'4', '5'} 
    }; 

Sonra bir yapı başlatılması yukarıdaki gibi munchkin_grid için Başlatıcı almak için {} bir seviye ekler.

+0

Teşekkürler, bu sorunu çözdü. Bunun neden çalıştığını açıklar mısınız? – Akrilla

+0

Evet, tamam, kısa bir açıklama ile kısaca düzenleyeceğim. Yorumlar koymak için biraz uzun. – Peter

-1

munchkin_grid.grid[5][5] = kodu, bir dizinin bir öğesine erişiyorsa (başka bir dille sözdizimini karıştırıyor olabilirsiniz ...) silme [5][5] sorununuzu gidermelidir.

DÜZENLEME: Aşağıdaki kodu (en azından herhangi bir IntelliSense hatalarını üretmedi ..) çalışması gerekir

#include <array> 
struct munchkin_grid_type 
{ 
    std::array<char, 5> grid[5]; 
}; 

munchkin_grid_type munchkin_grid; 

munchkin_grid.grid[0] = {'a', 'b', 'c', 'd', 'e' }; 
munchkin_grid.grid[1] = { ' ', ' ', ' ', ' ', ' ' }; 
munchkin_grid.grid[2] = { ' ', ' ', ' ', ' ', ' ' }; 
munchkin_grid.grid[3] = { ' ', ' ', ' ', ' ', ' ' }; 
munchkin_grid.grid[4] = { '1', '2', '3', '4', '5' }; 
+0

Hayır, sorunu düzeltmez. Önceden bildirilmiş bir diziyi başlatılamıyor (başlatıcı listesini kullanarak). – DimChtz

+0

@DimChtz şuan nasıl? – Isaac

+0

Bunu yapabilirsin. Hala yanlış – DimChtz

İlgili konular