Expected primary expression before '.'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #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; } |
我在写一个简单的课程。我有错误
在成员函数"double square::peripherity()"中;.cpp:21:错误:标记"."之前需要主表达式.cpp:21:错误:标记"."之前需要主表达式
这是否意味着我必须使用2*square::length+2*square::width??
是一种类型,不是一个对象
ZZU1
道
1 | return 2*length + 2*width; |
(Which is implicitly the same as:
1 | return 2*this->length + 2*this->width; |
无论你可能做什么,或请你不要做什么,宁可明晰。
如果
square 或- 一些基地级
square 或 - Objects in some name space
square
Yes,the accurate form would be:
1 | return 2*square::length + 2*square::width; |
是一种类型,而不是一个对象。
在这种情况下,它是一样的:
1 | return 2*this->square::length + 2*this->square::width; |
但是,既然这是同一个目标和同一个类型,你只能写:
1 | return 2*this->length + 2*this->width; |
然而,最简单的是:
1 | return 2*length + 2*width; |
1 2 3 | double square::perimeter() { return 2*square.length + 2*square.width; } |
因为你确定了一种广场阶级的方法。它看起来像你想在一个特定的对象上定义它,但你想在所有的场合都能找到它,所以你需要在一个特定的对象上定义它。
另一手上的实例变量
1 2 3 | double square::perimeter() { return 2 * length + 2 * width; //will refer to the instance variables automatically } |
简单使用
1 2 3 | double square::perimeter() { return 2 * length + 2 * width; } |
1 2 3 | double square::perimeter() { return 2*square.length + 2*square.width; } |
这个功能是什么?广场是一个班。运算符从对象访问成员。像EDOCX1
所以你应该是
1 2 3 | double square::perimeter() { return (2*(length + width)); } |
但广场的长度和宽度是平等的吗?
To access instance variables,just name them:
1 2 3 | double square::perimeter() { return 2*length + 2*width; } |