c++ - 源自 Boost Rational 的错误

标签 c++ boost compilation header-files

我无法让编译器 (g++) 包含 boost C++ 库中的某些头文件,这些文件位于 bin 目录的子目录中。 具体来说,我试图包含 Rational 类头文件 rational.hpp。首先,我尝试在我的 makefile 中包含以下脚本代码:

intRational.o: intRational.h
    g++ -I /home/.../boost_1_58_0 -c intRational.h

但是,它给了我这个错误:

In file included from testRational.cpp:11:0:
intRational.h:17:1: error: expected class-name before ‘{’ token
 {
 ^
make: *** [testRational.o] Error 1

这是 intRational.h:

#ifndef _INTRATIONAL_H
#define _INTRATIONAL_H

#include<boost/rational.hpp>
//Derived class
class intRational: public rational
{
  bool simplify;
  public:
    void setSimple()
    {
      simplify=true;
    };
    void setNoSimplify()
    {
      simplify=false;
    };
    bool getFlag()
    {
      return simplify;
    };
};


#endif // _INTRATIONAL_H

接下来我替换

#include<boost/rational.hpp>

带有完整目录

#include</home/.../boost_1_58_0/boost/rational.hpp>

(...代表显示我身份的目录的一部分)

这解决了第一个问题,但现在我有一个新错误:

In file included from intRational.h:14:0,
                 from testRational.cpp:11:
/home/.../boost_1_58_0/boost/rational.hpp:82:78: fatal error: boost/integer/common_factor_rt.hpp: No such file or directory
 #include <boost/integer/common_factor_rt.hpp> // for   boost::integer::gcd, lcm

此错误源自 boost 库文件rational.hpp。我不想将完整目录放入 #include 中,因为这样我就必须对 #include 所引用的头文件中的 #include 执行此操作比如common_factor_rt.hpp,每个头文件都往下写,这是一个很大的工作量。我不应该这样做,因为这违背了使用库的目的。

最佳答案

看起来你想要一个整数有理数:

#include <boost/rational.hpp>

// Derived class
class intRational : public boost::rational<int> {
    bool simplify;

  public:
    void setSimple()     { simplify = true;  } ;
    void setNoSimplify() { simplify = false; } ;
    bool getFlag()       { return simplify;  } ;
};

关于c++ - 源自 Boost Rational 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30638057/

相关文章:

c++ - 如何做 #define macro to do #define "myInt x" "int* x = new int[5]"

c++ - 用另一个字符串替换部分字符串(缺少第一个字符串)

c++ - 错误 : variable needs stack frame

c++ - 如何使用boyer_moore_search在内存中搜索char *字符串?

c++ - 迭代和修改C++优先级队列

c++ - 使用 std::map/boost::unordered_map 帮助理解段错误

c++ - 我们可以忽略 MySQL++ C4275 警告吗?

c++ - C++ 模板的问题(大惊喜!)。为什么这行不通?

c++ - 我需要做什么才能获得在编译器优化代码中调用的函数?

c - 从哪里可以获得这些头文件?