2013-01-07 47 views
2

我有一個問題,在Eigen教程here中指示的逗號初始化似乎沒有工作。Eigen C++中的逗號初始化問題C++

我有一個系統,其中i有一個主要部分,在那裏一個向量被初始化:

主要:

VectorXd v; 

和的函數:

double useVector(VectorXd &v) { 
    dataI = model_.find(); 
    v << model_[dataI].v[0], model_[dataI].v[1], model_[dataI].v[2], 1; 
    return dataI; 
} 

注:功能這樣使用:

double distance = useVector(v); 

現在的model_[dataI].vdouble[3],它絕對有效。我的理解是,這和這是一樣的:

VectorXd v; 
v << 1, 2, 3, 
    4, 5, 6, 
    7, 8, 9; 

但它不起作用,代碼是在函數的逗號初始化階段進行分段。

注意:只要v是初始化這樣

v.resize(4) 
v[0] = model_[dataI].v[0]; 
v[1] = model_[dataI].v[1]; 
v[2] = model_[dataI].v[2]; 
v[3] = 1; 

VectorXd v(4); 

這馬上讓我不知道關於調整大小的點(但如果我把它這個工程雖然那麼它會再次發生故障)。

有誰知道爲什麼會發生這種情況?

回答

2

是的,在使用逗號初始值設定項之前,矢量v 必須將調整爲適當的大小。