2012-10-17 140 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

相關問題