我刚开始学习C++,并尝试移植一些PHP代码。面向段错误的C++新手
class Color {
public:
// Props
int r;
int g;
int b;
int a;
// Constructor
Color (int r, int g, int b, int a) {
this -> r = r;
this -> g = g;
this -> b = b;
this -> a = a;
};
// Destructor
~Color() {
delete this;
};
// Mix 2 colors
void mixColor (const Color& c) {
this -> r = (this -> r + c.r)/2;
this -> g = (this -> g + c.g)/2;
this -> b = (this -> b + c.b)/2;
this -> a = (this -> a + c.a)/2;
};
};
而且在主文件:
我从这段代码获得一个段错误
int main() {
Color myColor (10, 20, 30, 40);
return 1;
}
任何想法是什么原因造成的呢?
谢谢。
1.不要使用'delete this;',2。'return 1;' - >'return 0;'或不返回 – 2014-12-06 19:23:57
是的,正如Piotr所说,“删除这个”是你的罪魁祸首。你甚至不需要该类的析构函数。我建议你摆脱它。 – David 2014-12-06 19:26:57
您也肯定会想要更改您的构造函数,以便参数名称与您的成员变量名称不同。你已经作用域分配的左手指向成员变量,但其不清楚别人不熟悉C++标准是什么“R”将被解释为。它可能是参数或成员变量。也许你承滴盘构造函数是成员变量分配给本身,而不是到参数,虽然我不知道什么是标准规定或者如果没有定义的行为。 – Ian 2014-12-06 19:29:04