我是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')没有命名类型
将vector作为参数的构造函数也会在'&lt;'之前给出错误:expected')'令牌。
我确信这是非常明显的,但不管是什么教程我都没有深入到类和类定义中来看到这样的例子。
答案 0 :(得分:2)
std::vector
在标头 vector 中定义。您需要添加语句
#include <vector>
位于头文件的顶部。这会导致预处理器(有效地)粘贴该文件的内容以代替#include
语句。因此,编译器知道类std::vector
在类定义中引用的类型。
这同样适用于std::string
,而#include <string>
又在标题字符串中定义。因此,为该标头添加#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H
#include <string>
#include <vector>
class Polynomial {
...
};
#endif /* POLYNOMIAL_H */
。
cppreference.com是搜索类型及其各自标题的良好参考;对于C ++来说,它也是一个很好的在线参考。
这是您的头文件应该是这样的:
{{1}}