在"."之前的预期主要表达.

pho*_*ton 10 c++ class

#include <iostream>
using std::cout;
using std::endl;

class square {

public:
    double length, width;

    square(double length, double width);
    square();

    ~square();

    double perimeter();
};

double square::perimeter() {
return 2*square.length + 2*square.width;
}

int main() {

square sq(4.0, 4.0);

cout << sq.perimeter() << endl;

return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个简单的类程序.我收到了错误

在成员函数'double square :: perimeter()'; .cpp:21:错误:在'.'之前预期的primary-expression token .cpp:21:error:在'.'之前预期的primary-expression 代币

这是否意味着我必须使用2*square :: length + 2*square :: width?

ild*_*arn 19

square是一种类型,而不是一个对象; 代替

return 2*square.length + 2*square.width;
Run Code Online (Sandbox Code Playgroud)

return 2*length + 2*width;
Run Code Online (Sandbox Code Playgroud)

(这隐含地与:

return 2*this->length + 2*this->width;
Run Code Online (Sandbox Code Playgroud)

您可以,或者不要,为了清楚而优先选择.

2*square::length + 2*square::width将是有效的语法,如果lengthwidth

  • 静态成员square,或
  • 一些基类的成员square,或
  • 某些命名空间中的对象 square