0

私はC++を初めて使用し、クラスを定義するヘッダーファイルのアイデアは私には異質です。多くのエラーを発生させているPolynomialクラスの次のヘッダーファイルがあります。

#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H

class Polynomial {
public:
    Polynomial(std::vector <int>&);
    Polynomial(const Polynomial& orig);
    virtual ~Polynomial();

    std::vector <int> getCoeffs();
    Polynomial getIntegral(int, int, int);
    Polynomial getDerivative(int);
    std::string toString();

    void integrate(int, int);
    void derive();
private:
    std::vector<int> coeffs;
};

 #endif /* POLYNOMIAL_H */

戻り型の定義に標準ライブラリの何かを含むすべてのクラスメソッドで、エラーが発生します。名前空間'std'の'vector'(または'string')は型を指定しません

また、ベクトルをパラメーターとして受け取るコンストラクターは、エラーを出します:'<'トークンの前に')'が必要です。

これは非常に明白なことだと思いますが、私が行ったチュートリアルが何であれ、このような例に出くわすために、クラスやクラス定義にこれほど深く入り込んでいません。

4

1 に答える 1

2

std::vectorヘッダーベクトルで定義されます。ステートメントを追加する必要があります

#include <vector>

ヘッダーファイルの上部にあります。これにより、プリプロセッサは#includeステートメントの代わりにそのファイルの内容を(効果的に)貼り付けます。したがって、コンパイラstd::vectorは、クラス定義で型が何を参照しているかを認識しています。

std::string同じことが、ヘッダー文字列で定義されているにも当てはまります。したがって#include <string>、そのヘッダーを追加します。

cppreference.comは、タイプとそれぞれのヘッダーを検索するための優れたリファレンスです。また、C++全般の優れたオンラインリファレンスでもあります。

ヘッダーファイルは次のようになります。

#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H

#include <string>
#include <vector>

class Polynomial {
  ...
};

#endif /* POLYNOMIAL_H */
于 2012-10-17T04:17:52.643 に答える