2011-11-16 81 views
6

我想發佈這個,因爲我不確定使用簡單的賦值語句時遇到了什麼問題。我正在做一個家庭作業,要求我在一個簡單的程序中編寫結構和函數來繪製出ASCII字符的形狀。現在我只是試圖測試我寫的函數,並且我正在試圖爲Circle結構的符號元素賦值,以測試我編寫的DrawShape函數。當我嘗試給它分配一個* char時,我收到一條錯誤消息,說「錯誤:從'const char *'無效轉換爲'char'」。我會把整個代碼放進去,雖然它很長並且沒有完成。任何幫助,這將不勝感激。我得到的問題是右主的開頭「circle1.char =‘*’」從「const char *」到「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; 
} 
+4

這是方式,方法太長。 –

+3

您正在使用'「*」'',它是一個字符串,而不是'*'',它是一個字符。 –

+0

下一次,發佈一個簡短(但完整)的問題的例子... –

回答

18

您應該使用單引號字符。雙引號表示您正在使用(可能爲單字符)字符串文字,該文字表示爲const char *(指向常量字符的指針)。

正確的語法:circle1.symbol = '*';

1

你的Circle定義說,symbolchar,但你嘗試將它分配一個字符串字面char[2]類型:

circle1.symbol = "*"; 

相反,你應該給它分配a char

circle1.symbol = '*'; 
0

在C++ ,單個字符不是用雙引號來書寫,而是用單引號,即'*'而不是"*"。實際上「*」是一個兩個字符的數組,第一個是'*',第二個是'\0'來標記字符串的結尾。

1

您有:

circle1.symbol = "*"; 

您需要:

circle1.symbol = '*'; 
0

你的圈結構的 「符號」 的成員定義爲單個字符。雖然看起來你正在分配一個字符,但你實際上正在分配一個長度爲1的字符串或char *。區別在於:char a ='a'; char * a =「a」;這一切都在報價中。

5

問題是這裏:

circle1.symbol = "*"; 

circle1.symbol被定義爲char,但你指定一個字符串它(字符數組)。你需要做的是

circle1.symbol = '*'; 
0

你的錯誤是在線circle1.symbol = "*";"*"const char * symbol(你的結構的)是char 嘗試:circle1.symbol = '*';

相關問題