如何在c ++中使用我自己的类中的库?

时间:2017-07-30 19:50:37

标签: c++

我想实现一个可以处理任意大数的类。我知道我可以使用像BigInteger这样的其他库,但我只想实现自己的实践。

我的标题文件:

#ifndef INT_H
#define INT_H

//#ifndef vector
#include <vector>

class Int{
private:
    vector<int> v;
public:
    Int();
    Int(int);
    void clear();
    void push_back();
    void resize();
    vector<int>::iterator begin();
    vector<int>::iterator end();
    int size();
    void sum(Int &, Int, Int);
    void sub(Int &, Int, Int);
    void prod(Int &, Int, Int);
    Int operator+(const Int &);
    Int operator-(const Int &);
    Int operator*(const Int &);
    Int operator>(Int &);
    Int operator<(Int &);
    Int operator>=(Int &);
    Int operator<=(Int &);
    int& operator[] (Int);
};

//#endif // vector
#endif // INT_H

问题是它在第9行第一次遇到vector时给出了一个错误,即“在'&lt;'之前预期的不合格ID标记“

非常感谢任何帮助。

编辑:使用include混淆定义。 现在我得到矢量没有命名类型

1 个答案:

答案 0 :(得分:2)

来自#include <vector>vector类型位于std命名空间中;由于代码中未定义vector<int>的显式类型,因此您需要执行以下操作之一来解决此问题:

  1. vector<T>的所有实例重命名为std::vector<T>,其中T是向量将包含的类型(在您的情况下为int)。
    1. #include <vector>后,您需要添加第using std::vector;行。使用此using declaration,如果遇到不合格的vector类型,则会使用std::vector类型。
    2. 请注意,由于此类是在标题中定义的,因此如果您使用选项2,那么在#include "Int.h"的任何位置,您还会包含using std::vector;声明。

      您的代码的旁注:我不确定您的Int类的完整意图是什么,特别是因为您的类提供类似于序列容器的成员函数,但不要忘记您的{ {3}}(例如Int& operator=(std::uint32_t i) ...)。

      希望可以提供帮助。