忍受我和我的问题,因为我不是一个非常有经验的程序员。
在我的程序中,我有一个结构定义如下:
// 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
正确的代码应该在这里?我在这里做错了什么?
答案 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));