我不经常涉足 C++,但我正在学习数据结构,这本书使用 C++ 作为它的语言。我目前正在设置课程。
我的问题是:
Visual Studio 2012 对未知变量大喊大叫。我在我的标题中声明了变量,所以我不太确定我为什么会遇到这个问题。
我正在尝试重载加法和乘法运算符(作为非成员函数),但它仍在尝试使用它,就好像我只允许有一个重载参数一样。
这是我正在做的一些代码:
1. 不明变量
/* Quadratic.h */
#include <iostream>
using namespace std;
class Quadratic
{
public:
// constructors
Quadratic::Quadratic()
// accessors
Quadratic::getA();
Quadratic::getB();
Quadratic::getC();
// mutators
Quadratic::setCoefficients(float coA, float coB, float coC);
private:
float a, b, c, x;
};
二次方.cpp:
/* Quadratic.cpp */
#include <iostream>
#include "Quadratic.h"
using namespace std;
class Quadratic
{
// Default constructor
Quadratic::Quadratic()
{
a = 0; // Visual Studio is complaining about a, b, & c
b = 0;
c = 0;
}
/* Mutators */
void Quadratic::setCoefficients(float coA, float coB, float coC)
{
a = coA;
b = coB;
c = coC;
}
/* Accessors */
float Quadratic::getA() const {
return a;
}
float Quadratic::getB() const {
return b;
}
float Quadratic::getC() const {
return c;
}
};
这就是第一个问题的内容。我不太确定为什么它无法找到这些变量。有人可以指出我做错了什么吗?
2.重载运算符(参数不匹配)
/* Quadratic.h */
/* Overloading Operators */
Quadratic & operator+(const Quadratic & q1, const Quadratic & q2);
Quadratic & operator*(double r, const Quadratic & q);
它只是告诉我我有太多参数。我在想它期望做类似的事情q1.operater+(q2)
,因为我希望能够做类似的事情q3 = q1 + q2
任何指针都可以很好地解决这些小问题。
编辑
按要求编译错误:
error C2804: binary 'operator +' has too many parameters
error C2804: binary 'operator *' has too many parameters
基本上我上面提到的,也许我并不清楚。
编辑 2
不知道为什么它被否决,但如果你要否决它,至少说明原因......如果是因为问题是新手?因为这个问题措辞或解释不当,或者只是因为你的自我太高了?当某人试图学习新事物时,无需贬低他们。
除此之外,感谢legend2k、john、steve、salda和basile抽出时间帮助我。我真的很感激。C++ 比 Java 多得多。