注册 登录
编程论坛 C++教室

一道关于私有成员定义求解

ppvae 发布于 2014-09-15 22:43, 497 次点击
# include <iostream.h>
# include <string.h>

class CRect
{
private:
    char *color;
    int  x_coordinate;
    int  y_coordinate;
    int length;
    int width;

public:
    CRect(char color1[], int x_coordinate1, int y_coordinate1, int length1, int width1);
    void SetColor(char *color1);
    void SetSize(int length1, int width1);
    void Move(int x_coordinate1, int y_coordinate1);
    void Draw();
};

int main(void)
{
    CRect A("blue",30,40,20,100);
    A.Draw();
    //A.SetColor("yellow");
    A.SetSize(100,50);
    A.Move(30,20);
    A.Draw();

    return 0;
}
CRect :: CRect (char color1[], int x_coordinate1, int y_coordinate1, int length1, int width1)
{
        strcpy(color,color1);
        x_coordinate = x_coordinate1;
        y_coordinate = y_coordinate1;
        length = length1;
        width = width1;
}
void CRect :: SetColor(char *color1)
{
    strcpy(color,color1);
}
void CRect :: SetSize(int length1, int width1)
{
    length = length1;
    width = width1;
}
void CRect ::  Move(int x_coordinate1, int y_coordinate1)
{

    x_coordinate = x_coordinate1;
    y_coordinate = y_coordinate1;
}
void CRect :: Draw()
{
    cout<<"颜色为:"<<color<<endl;
    cout<<"长度为:"<<length<<endl;
    cout<<"宽度为:"<<width<<endl;
    cout<<"坐标为:"<<x_coordinate<<" "<<y_coordinate<<endl;
}


为什么私有成员不能定义为 char *color这样程序就自己停止运行了 而char color{10]这样就可以呢
5 回复
#2
stop12042014-09-16 03:02
字符指针. 加const

const char *xxx
#3
fl89622014-09-16 03:38
回复 楼主 ppvae
i think you need to allocate memory space for char * color.
char * color=new char[10];
add this statement and try again. Maybe things would be changed.
#4
ppvae2014-09-17 21:37
回复 3 楼 fl8962
good
#5
zerolu2014-09-18 03:07
你要知道strcpy这个函数的要求,第一个参数也就是要复制进去的参数必须是数组不能只是个指针。
#6
fl89622014-09-19 07:37
回复 5 楼 zerolu
数组是什么?指针是什么?你确定strcpy 不能用指针?同学可以分配内存呀。
1