我对这个级别的编码比较陌生,我真的在这个错误上碰壁了:
[Line 65] error C2143: syntax error : missing ';' before '.'
显然,这通常意味着我的代码中存在语法错误,但我无法在任何地方找到它。任何帮助(或第二组眼睛看到我的错误将不胜感激)。
以下是相关代码段:
class RacingCar {
public:
Wheel* wheels[4];
RacingCar()
{
wheels[0] = new Wheel;
wheels[1] = new Wheel;
wheels[2] = new Wheel;
wheels[3] = new Wheel;
}
RacingCar( RacingCar& refOldCar)
{
// new Wheel(refOldCar.wheels[0]->pressure);
wheels[0] = new Wheel;
wheels[1] = new Wheel;
wheels[2] = new Wheel;
wheels[3] = new Wheel;
int a = refOldCar.speedCopy();
**RacingCar.setSpeed(10);**
RacingCar.Brake(50);
RacingCar.Print();
RacingCar.speed = refOldCar.speed;
}
非常感谢您的帮助
答案 0 :(得分:5)
此:
RacingCar.setSpeed(10);
应该是:
setSpeed(10);
这是:
的简写this->setSpeed(10);
答案 1 :(得分:1)
RacingCar.setSpeed(10);
没有这样的语法。写:
RacingCar::setSpeed(10);
或
setSpeed(10);
或
this->setSpeed(10);
请注意,所有可能具有不同的含义,但在您的上下文中可能会有相同的效果。
答案 2 :(得分:1)
您正在使用Class和Constructor(与Class相同)名称 - 例如RacingCar而不是refOldCar,这个或者只是直接访问成员。
答案 3 :(得分:0)
由于速度不太可能是类级属性(影响所有汽车),你可能想写:
this->setSpeed (10); // or, for the less anal, just "setSpeed(10);" :-)
这更准确地说是尝试设置对象级属性。类级属性将引用RacingCar::SomethingOrOther
(双冒号而不是点),这就是为什么它认为您需要在.
字符之前关闭当前语句。