从结构中读取数据会产生错误:

时间:2016-02-03 11:02:52

标签: c++

忍受我和我的问题,因为我不是一个非常有经验的程序员。

在我的程序中,我有一个结构定义如下:

    // Screen Cell Structure
//
// The Symbol is the ASCII code of the character to be drawn plus the following special symbols:
// \xA1: left arrow
// \xA2: right arrow


struct CDU_Cell
{
unsigned char   Symbol;
unsigned char   Color;  // any of CDU_COLOR_ defines
unsigned char   Flags;  // a combination of CDU_FLAG_ bits
};

// CDU Screen Data Structure

#define CDU_COLUMNS 24
#define CDU_ROWS    14

struct CDU_Screen
{
CDU_Cell Cells[CDU_COLUMNS][CDU_ROWS];
bool Powered;   // true if the CDU is powered
};

// CDU Screen Cell Colors
#define CDU_COLOR_WHITE 0   
#define CDU_COLOR_CYAN  1
#define CDU_COLOR_GREEN 2
#define CDU_COLOR_MAGENTA   3
#define CDU_COLOR_AMBER 4
#define CDU_COLOR_RED   5

// CDU Screen Cell flags
#define CDU_FLAG_SMALL_FONT 0x01    // small font, including that used for line headers 
#define CDU_FLAG_REVERSE    0x02    // character background is highlighted in reverse video
#define CDU_FLAG_UNUSED 0x04    // dimmed character color indicating inop/unused entries

然后我有这个功能,我想存储数据

void ProcessCDUData(PMDG_NGX_CDU_Screen *pS)
{

for (int i = 0; i < 14; i++) {
for (int j = 0; j < 24; j++) {

     str33      = pS->Cells[j][i];

所以我可以把它写到一个带有这个

的窗口
// Create a text layout for a string
IDWriteTextLayout *pTextLayout1;


const WCHAR str1[] = str33
pDWriteFactory->CreateTextLayout(
    str1,
    24,
    //sizeof(24)/sizeof(str1[0]),
    pTextFormat,
    0.0f,
    0.0f,
    &pTextLayout1
);

我的问题是我无法将数据存储到str33。

我收到错误:

no suitable conversion function from "PMDG_NGX_CDU_Cell" to "char" exists

正确的代码应该在这里?我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

显然str33是CDU_Cells的类型:

str33      = pS->Cells[j][i];

你试图在str1中影响WCHAR类型(显然是char)。也许你可以从CDU_Cells到WCHAR进行显式转换吗?

答案 1 :(得分:0)

如果要在类型转换后访问数据,则类型转换应该有意义。如果您只想将数据存储在不同的数据类型中,则使用指针数据类型进行类型转换并使用memcpy进行复制。

示例:

struct A
{
   char str1[20];
   char str2[20];
};

char str3[40];
strcut A mystruct;

memcpy(str3, (char *) (&mystruct), sizeof(struct mystruct));