2012-10-17 55 views
0

我是C++的新手,头文件定义类的想法对我来说是陌生的。我有一个Polynomial类的以下头文件,它给了我很多错误。std lib对象作为返回类型和函数参数

#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 */ 

所有的类方法,包括,从标准库的东西在他们的返回类型定义给我的错误:命名空间“矢量”(或“串”)“性病”没有指定类型

另外,将矢量作为参数的构造函数给出错误:'<'令牌之前的期望')'。

我确定这是非常明显的事情,但无论是我所做的教程,都没有深入到类和类定义中,以便遇到类似的例子。

+1

您需要包括适当的头使用类。 – chris

回答

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 */ 
+0

谢谢,我有时会对什么时候适合包含不同的东西感到困惑;例如,为什么你通常不包含cpp文件,但你包含头文件? – clementine

相关问题