私はあまり C++ に手を出すことはありませんが、データ構造について学んでおり、この本では言語として C++ が使用されています。現在、クラス編成を検討中です。
私の問題は次のとおりです。
Visual Studio 2012 は、未確認の変数について吠えています。ヘッダーで宣言された変数があるため、なぜ問題が発生するのかよくわかりません。
加算演算子と乗算演算子を (非メンバー関数として) オーバーロードしようとしていますが、オーバーロードのパラメーターを 1 つしか持てないかのように使用しようとしています。
ここに私がやっていることのコードがあります:
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 よりもはるかに実践的です。