[1.1] 課題プログラムの完成
[1.2] 課題プログラム
色つきの円を作るCircleクラスと、色名と色値をしめすCNameクラスがあり、Circleオブジェクトの色とCNameオブジェクトの色が一致しているかの判定をするプログラム。判定をするbool型関数をフレンド関数で実装する。
#include<iostream>
#include<cstring>
using namespace std;
class CName{
char name[50];
int r,g,b;
public:
CName(char* str,int u,int v,int w);
char* get_name(){return name;}
void show();
};
class Circle{
double x,y;
double radius;
int r,g,b;
public:
void set_xyr(double s,double t,double r){
x=s;y=t;radius=r;
}
void set_color(int u,int v,int w){
r=u;g=v;b=w;
}
void show();
bool isSame(CName col);
};
void Circle::show(){
cout << "座標:("<<x<<","<<y<<")\n";
cout << "半径:" <<radius<<"\n";
cout << "RGB:(" <<r<<","<<g<<","<<b<<")\n";
}
bool Circle::isSame(CName col){
if( ) return true; //エラー1
else return false; //エラー2
}
CName::CName(char *str, int u, int v, int w){
strcpy(name,str);
r=u;g=v;b=w;
}
void CName::show(){
cout<<name<<":("<<r<<","<<g<<","<<b<<")\n";
}
int main(){
Circle ob;
CName co1("Red",255,0,0);
CName co2("Green",255,0,0);
CName co3("Blue",255,0,0);
ob.set_xyr(2.0,3.0,5.0);
ob.set_color(255,0,0);
cout <<"円の情報を表示\n";
ob.show();
cout <<"色の情報:";co1.show();cout<<"\n";
cout<<"この円の色は"<<co1.get_name();
if(isSame(co1)){
cout <<"です\n";
}else{ cout <<"ではありません\n";}
return 0;
}
エラー2 else文がifと一致しません
[1.4]
質問1
今回出された課題はサンプルのプログラムが動くようにmain関数を作成せよ、というものです。そのためmain関数以外はすでに課題に書かれていたものです。そのため、サンプルとして出された部分でエラーが出てしまい戸惑っています。見返しても間違ってはいないはずなのですが・・・。サンプルがおかしいのでしょうか、それとも自分のmain関数に不備があるのでしょうか。教えてもらえるとありがたいです。
質問2
上記のように課題の問題文にはbool型関数isSame(CName)をフレンド関数で実装するとあるのですが、サンプルを見る限り実装されているようには自分には見えません。サンプル部分を変更してフレンド関数になるようにすると、今度はisSameがCircleのメンバではありませんというエラーが出てしまいます。
[2] 環境
[2.1] OS : Windows7
[2.2] コンパイラ名 : visual studio 2008
[3] その他
・現在C++のオブジェクトのポインタを習っています。