struct Color {
int red;
int green;
int blue;
Color(int nred, int ngree, int nblue):red(nred),green(ngree),blue(nblue){
}
};
struct Cal {
int days;
Color color;
Cal(): days(), color(255,255,255){
}
};
int main() {
Cal go;
go.color(100,100,100);
return 0;
}
有什么问题?编译器是否认为color
是函数而不是构造函数?怎么解决这个?
答案 0 :(得分:4)
是的,它认为color
是一个函数而不是构造函数。
对象已经构建,调用构造函数为时已晚。
向Cal
添加一个可以获取颜色值并转发它们的构造函数:
struct Cal {
int days;
Color color;
Cal(): days(), color(255,255,255){
}
Cal(int nred, int ngree, int nblue): days(), color(nread,ngree,nblue){
}
};
int main() {
Cal go(100,100,100);
return 0;
}
手动设置值:
int main() {
Cal go;
go.color.red = go.color.green = go.color.blue = 100;
return 0;
}
从临时实例中分配color
成员:
int main() {
Cal go;
go.color = Color(100, 100, 100);
return 0;
}