来自 Boost Rational 的错误
Error deriving from Boost Rational
我无法让我的编译器 (g++) 包含来自 boost C++ 库的某些头文件,它们位于我的 bin 目录的子目录中。
具体来说,我试图包含 rational class 头文件 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 中的例如 common_factor_rt.hpp 引用的头文件,每个头文件都在下面,这是很多工作。我不应该这样做,因为这有点违背了使用库的目的。
看起来你想要一个整数有理数:
- 将模板参数指定为
rational<>
- 用命名空间限定基础 class(它在
boost
中)
- OT: 你通常不编译头文件: Why have header files and .cpp files in C++?
#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; } ;
};
我无法让我的编译器 (g++) 包含来自 boost C++ 库的某些头文件,它们位于我的 bin 目录的子目录中。 具体来说,我试图包含 rational class 头文件 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 中的例如 common_factor_rt.hpp 引用的头文件,每个头文件都在下面,这是很多工作。我不应该这样做,因为这有点违背了使用库的目的。
看起来你想要一个整数有理数:
- 将模板参数指定为
rational<>
- 用命名空间限定基础 class(它在
boost
中) - OT: 你通常不编译头文件: Why have header files and .cpp files in C++?
#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; } ;
};