0

我是 C++ 新手,头文件定义类的想法对我来说很陌生。我有一个多项式类的以下头文件,它给了我很多错误。

#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 回答