2013-12-16 89 views
0

代碼是:錯誤:預期構造,析構函數,或類型之前 '<' 令牌轉換 - 函數聲明

#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; 
    } 

在管線

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){ 

我收到此錯誤

error: expected constructor, destructor, or type conversion before ‘<’ token function

任何幫助,非常感謝。謝謝

編輯:我編輯的代碼,並做了你告訴我的一切。我感謝所有的幫助,但錯誤依然存在。我想,問題是因爲矩陣數據類型,從boost庫,我必須傳遞給函數。

還有更多建議嗎?

+3

我在任何地方都看不到'#include '或'使用std :: vector'。解決方法可能很簡單,只需添加缺少的include,然後在'#include '後面輸入'std :: vector',或者在''vector''處添加'使用std :: vector'。 (我認爲這裏大部分都會依賴''using'聲明...) –

+0

as @JoeZ說,如果這不起作用只是把更多的信息關於錯誤和哪個行有錯誤 – ahmedsafan86

+0

是你的完整代碼? –

回答

0

不完全確定這是問題,但是您沒有包含vector.h或聲明'using namespace std',因此該向量可能在該範圍內未定義。

+1

我打賭它應該是'boost :: numeric :: ublas :: vector'而不是'std :: vector'。再一個證明「使用命名空間」是一個壞主意。 – Angew

+0

@Angew然後用同樣的答案,但用'#include ';) – Casey

+0

我花了太多時間使用STL,一切都是std ::對我來說。我也很少利用'使用'。爲了清晰起見,我喜歡明確的名稱空間聲明 –

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返回值的類型爲vector<double>,但您設置的函數體爲空。所以你不能返回vector<double>值。您可能需要在函數中編寫一些代碼,並實例化一個對象,然後返回該對象。

+2

即使你是對的,這不是一個問題的答案,缺乏'return'聲明不會導致OP看到的行爲。 – hvd

+0

它正確返回向量double,這裏沒有問題,謝謝 – user1450005

相關問題