#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::width
和length
为width
或的某些基类
square
或某些命名空间中的
square
关于c++ - '.'之前的预期主要表达,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9794328/