私は、アスキー文字で図形を描き、画面全体に移動させるプログラムを書くという宿題をしています。この例では、すでに描画された円を移動するメソッドを記述しようとしています。私は私のdrawCircle
メソッドが動作することを知っていますが、私はmoveCircle
メソッドでdrawCircle
メソッドを呼び出そうとすると何も出力しません。C++でクラス内のメソッドを効果的にどのように使用しますか?
void CircleType::drawCircle() const{
for (int i = 0; i < NUMBER_OF_ROWS; i++) {
for(int j = 0; j < NUMBER_OF_COLUMNS; j++) {
int p = abs (x - j);
int q = abs (y - i);
int distance = pow(p, 2) + pow(q, 2);
int realDistance = pow(radius, 2);
if (abs(realDistance - distance) <= 3){ // I tested out several values here, but 3 was the integer value that consistently produced a good looking circle
drawSpace[i][j] = symbol;
}
}
}
displayShape();
return;
}
bool CircleType::moveCircle(int p, int q){
if (p - radius < 0 || p + radius > NUMBER_OF_COLUMNS){
cout << "That will move the circle off the screen"<< endl;
return false;
}
else if (q - radius < 0 || q + radius > NUMBER_OF_ROWS){
cout << "That will move the circle off the screen"<< endl;
return false;
}
else{
x = p;
y = q;
for (int m = 0; m < NUMBER_OF_ROWS; m++){
for(int n = 0; n < NUMBER_OF_COLUMNS; n++){
if (drawSpace[m][n] == symbol)
drawSpace[m][n] = ' ';
}
}
void drawCircle();
return true;
}
}
drawSpace
形状のASCII文字を保持する2D char配列であり、そしてdisplayShape
は、2次元アレイをプリントアウトする機能です。上で述べたように、drawCircle
関数は機能しますが、moveCircle
メソッドは機能しません。私がmoveCircle
でそれを使用しようとすると、drawCircle
メソッドを間違って呼びますか?
'void drawCircle()'は、drawCircleという関数が存在し、引数を取らずにvoidを返すことをコンパイラに伝えています。 –
ありがとう、キース、私はおそらくその効果に何かを追加する必要があります。 –
すごい、間違ったおかげでみんな – classISover