#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;
}
我正在尝试编写一个简单的类程序。我收到错误
in member function 'double square::perimeter()';
.cpp:21: error: expected primary-expression before '.' token
.cpp:21: error: expected primary-expression before '.' token
这是否意味着我必须使用2*square::length + 2*square::width

最佳答案

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

return 2*square.length + 2*square.width;


return 2*length + 2*width;

(这与以下内容隐含相同:
return 2*this->length + 2*this->width;

为了清晰起见,您可能会喜欢,也可能不会喜欢)。

如果2*square::length + 2*square::widthlength
width或的
  • 静态成员
    某些基类square
  • 成员
    某些命名空间中的
  • 对象square
  • 关于c++ - '.'之前的预期主要表达,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9794328/

    10-13 09:18