我已经从github克隆了一个开源代码。这个项目是用make编译的,完全没问题。我重新配置它并创建了一个codeblocks项目添加了它的文件。我也错放了一些文件,我也做了一些修复。
我的问题是当我编译它时,我遇到了很多错误,第一个是:
error: expected class-name before '{' token
QProblem.hpp
中的:
#include <qpOASES/QProblemB.hpp>
#include <qpOASES/Constraints.hpp>
#include <qpOASES/ConstraintProduct.hpp>
#include <qpOASES/Matrices.hpp>
BEGIN_NAMESPACE_QPOASES
class QProblem : public QProblemB // error is here
{
QProblemB
已在QProblemB.hpp
中定义,其中包括:
QProblemB.hpp:
#include <qpOASES/Flipper.hpp>
#include <qpOASES/Options.hpp>
#include <qpOASES/Matrices.hpp>
BEGIN_NAMESPACE_QPOASES
class SolutionAnalysis;
class QProblemB
{
friend class SolutionAnalysis;
public:
QProblemB( );
我尝试添加
class QProblemB;
但是这个想法没有用。这会导致另一个错误:
error: invalid use of incomplete type 'class qpOASES::QProblemB'
我无法进一步简化源代码。所以我上传了完整的项目here。 codeblocks项目文件位于名为codeblocks
的文件夹中。
更新
我意识到通过更新所有文件并在所有文件中添加#pragma once
并将所有cpp
文件更改为hpp
(主cpp文件除外),问题将得到解决。我仍然想知道这是什么问题。