Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:在';之前需要构造函数、析构函数或类型转换<';令牌-函数声明_C++_Boost_C++11 - Fatal编程技术网

C++ 错误:在';之前需要构造函数、析构函数或类型转换<';令牌-函数声明

C++ 错误:在';之前需要构造函数、析构函数或类型转换<';令牌-函数声明,c++,boost,c++11,C++,Boost,C++11,代码是: #include <ctime> #include <iostream> #include <fstream> #include <sstream> #include <cstdlib> #include <iterator> #include <queue> #include <algorithm> #include <string> #include <cassert&

代码是:

#include <ctime>
#include <iostream>
#include <fstream>
#include <sstream>
#include <cstdlib>
#include <iterator>
#include <queue>
#include <algorithm>
#include <string>
#include <cassert>
#include <cmath>
#include <iomanip>
#include <new>
#include <algorithm>
#include <functional>
#include <vector>

using namespace std;

using std::vector;

    #include <boost/numeric/ublas/matrix.hpp>
    #include <boost/numeric/ublas/io.hpp>
    #include <boost/numeric/ublas/operation.hpp>
#include <boost/numeric/ublas/vector.hpp>

    using namespace boost::numeric::ublas;

    boost::numeric::ublas::matrix<double> A_MATRIX(A_MATRIX_ROWS,A_MATRIX_COLUMNS);
    boost::numeric::ublas::matrix<double> Y_MATRIX(A_MATRIX_ROWS,1);


    vector <double> GPSR_BB(boost::numeric::ublas::matrix<double> &f_Y_MATRIX,boost::numeric::ublas::matrix<double> &f_A_MATRIX,int f_tau,int f_tolA){

vector<double> objective(2);

//sth inside function

return objective;

    }

    int main(){
        vector<double> objectives(maxiter+2);
        objectives=GPSR_BB(Y_MATRIX,A_MATRIX,tau,tolA);
        return 0;
    }
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
使用std::vector;
#包括
#包括
#包括
#包括
使用名称空间boost::numeric::ublas;
boost::numeric::ublas::矩阵A_矩阵(A_矩阵_行,A_矩阵_列);
boost::numeric::ublas::矩阵Y_矩阵(A_矩阵_行,1);
向量GPSR_BB(boost::numeric::ublas::matrix&f_Y_matrix,boost::numeric::ublas::matrix&f_A_matrix,int f_tau,int f_tolA){
向量目标(2);
//内部功能
回报目标;
}
int main(){
向量目标(maxiter+2);
目标=GPSR_BB(Y_矩阵、A_矩阵、tau、tolA);
返回0;
}
一致

vector <double> GPSR_BB(boost::numeric::ublas::matrix<double> &f_Y_MATRIX,boost::numeric::ublas::matrix<double> &f_A_MATRIX,int f_tau,int f_tolA){
向量GPSR_BB(boost::numeric::ublas::matrix&f_Y_matrix,boost::numeric::ublas::matrix&f_A_matrix,int f_tau,int f_tolA){ 我收到这个错误


错误:在“之前需要构造函数、析构函数或类型转换,但不完全确定这是否是问题所在,但您尚未包含vector.h或声明“使用命名空间std”,因此vector可能在该范围内未定义。

在代码中

vector <double> GPSR_BB(boost::numeric::ublas::matrix<double> &f_Y_MATRIX,
  boost::numeric::ublas::matrix<double> &f_A_MATRIX,
  int f_tau,
  int f_tolA){}
向量GPSR_BB(boost::numeric::ublas::matrix&f_Y_matrix), boost::numeric::ublas::matrix&f_A_matrix, 内福头, int f_tolA){}
您正在将
GPSR\u BB
的返回值类型定义为
vector
,但您将函数体设置为空。因此无法返回
vector
值。您可能需要在函数内部编写一些代码,实例化
vector
对象,然后返回该对象。

我没有看到
\include
在任何地方使用std::vector
。修复方法可能很简单,只需添加缺少的include,或者在现在有
vector
的地方键入
std::vector
,或者在
之后添加
using std::vector
(我认为这里的大多数人都会反对
using
语句…)正如@JoeZ所说,如果这不起作用,只需输入更多关于错误的信息,哪一行有错误?这是你的完整代码吗?@JoeZ我打赌它应该是
boost::numeric::ublas::vector
,而不是
std::vector
。只要再证明
使用名称空间
是个坏主意。我有两种方法#包括或使用std::vector,但我忘了写。我想问题在于函数定义。即使你是对的,这并不是问题的答案,缺少
return
语句不会导致OP看到的行为。它正确地返回向量双精度,这里没有问题,谢谢你。我打赌它应该是
boost::numeric::ublas::vector
而不是
std::vector
。再证明一次
使用命名空间是个坏主意。@Angew同样的答案,但对于
#include
),我花了太多时间使用STL,对我来说一切都是std::的。我也很少使用“using”。为了清晰起见,我喜欢显式的命名空间声明。我添加了这个#include,仍然是同一个错误。我将进一步查看
Y\u矩阵(A\u MATRIX\u ROWS,1);
可能是由于Y\u MATRIX宏的某些功能不正常,导致下一行无效。