我想发布这个,因为我不确定我在一个简单的赋值语句中遇到了什么问题。我正在做一个家庭作业,要求我在一个简单的程序中编写结构和函数来绘制ASCII字符的形状。现在我只是想测试我编写的函数,我试图为Circle结构的符号元素赋值,只是为了测试我写的DrawShape函数。当我尝试为它分配一个* char时,我收到一条错误消息“错误:从'const char *'无效转换为'char'”。我会将整个代码放入其中,尽管它很长且未完成。任何帮助都将不胜感激。我得到的问题恰好在主题“circle1.char ='*'”
的开头#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
const int NUMBER_OF_ROWS = 26;
const int NUMBER_OF_COLUMNS = 81;
char drawSpace[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
struct Point{
int x;
int y;
};
struct Circle{
Point center;
int radius;
char symbol;
bool buffer[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
};
bool setCircleRadius(Circle &b, int r);
bool setCircleCenter(Circle &b, int x, int y);
bool moveCircle(Circle &b, int x, int y);
void drawCircle (Circle b);
void lineChars(Line a);
void circleChars(Circle b);
void drawShapes();
int main() {
Circle circle1;
circle1.radius = 5;
circle1.symbol = "*";
circle1.center.x = 40;
circle1.center.y = 10;
drawCircle(circle1);
return 0;
}
答案 0 :(得分:21)
您应该使用单引号作为字符。双引号表示您正在使用(可能是单字符)字符串文字,表示为const char *
(指向常量字符的指针)。
正确的语法:circle1.symbol = '*';
答案 1 :(得分:5)
问题在于:
circle1.symbol = "*";
circle1.symbol
定义为char
,但您为其指定了一个字符串(一组字符)。你需要做的是
circle1.symbol = '*';
答案 2 :(得分:1)
您对Circle
的定义表明symbol
是char
,但您尝试为其分配char[2]
类型的字符串文字:
circle1.symbol = "*";
相反,您应该为其分配char
:
circle1.symbol = '*';
答案 3 :(得分:1)
你有:
circle1.symbol = "*";
你需要:
circle1.symbol = '*';
答案 4 :(得分:0)
在C ++中,单个字符不是用双引号编写的,而是使用单引号,即'*'
,而不是"*"
。实际上“*”是两个字符的数组,第一个是'*'
,第二个是'\0'
来标记字符串的结尾。
答案 5 :(得分:0)
&#34;符号&#34; Circle结构的成员被定义为单个char。虽然看起来你正在分配一个字符,但实际上你正在分配长度为1的字符串或字符*。差异:char a =&#39; a&#39 ;; char * a =&#34; a&#34 ;;它全部在引号中。
答案 6 :(得分:0)
您的错误位于第circle1.symbol = "*";
行。
"*"
是const char *
symbol
(您的结构)是char
尝试:circle1.symbol = '*';