定义类向量的向量,并从函数内部调用它

时间:2011-01-29 11:44:29

标签: c++

我对指针有一些问题,我认为那些是标准问题,但是我越是无法解决它们......

我的困难是定义一个类的向量向量( CRegression )并将其初始化为 num_bits 向量元素并在每个向量元素中其中一个元素 CRegression CRegression 需要 num_mesurments 作为初始化参数)。其次,我如何在函数CRegression中从类 solve_regression 调用元素R2。

我希望以下示例将解释为什么我需要 b 作为指针。

如果不清楚,请告诉我,我会添加更多信息。

此致

#include <iomanip>
#include <queue>
#include <vector>
#include <cstdint<
#include <Eigen/Core>

typedef Eigen::Matrix< double , Eigen::Dynamic , 1 >    VectorXd;
typedef Eigen::Matrix< double , 1              , 1 >    Scalard;

void solve_regression( std::queue<double> *b , double &CReg_index , 
                       std::vector<CRegression> &Reg ) {
      std::cout << "size of b" << (*b).size()       << std::endl;
      std::cout << "R2" <<  (*Reg[CReg_index]).R2[0]  << std::endl;

      VectorXd::Map( &(*b).front() , (*b).size() );
}

class CRegression {

public:
CRegression( uint32_t  num_mesurments );
    Scalard        R2;

private:

};


int main( int argc, char* argv[] ) {

      uint8_t num_bits = 20;
      std::vector<double> CReg_index(num_bits,0);
      std::vector< std::queue<double> > b(num_bits);
      // The next line does not pass compilation (why?)
      std::vector< std::vector<CRegression> >   Reg( num_bits ,
                   std::vector<CRegression>(1,CRegression(50) ) );

      for ( uint8_t i = 0; i < num_bits ; i++ )
          solve_regression( &(b[i]) ,  CReg_index[i] , &(Reg[i]) );

}

2 个答案:

答案 0 :(得分:0)

  

我希望下面的例子能解释为什么我需要 b 作为指针。

您不需要 b 作为指针。使用参考参数。

干杯&amp;第h。,

答案 1 :(得分:0)

标记的行与g ++ 4.5编译良好,但对solve_regression的调用则没有。确保CRegression的{​​{1}}构造函数有效。另外,请仔细阅读https://isocpp.org/wiki/faq/references#pointers-and-references并了解如何正确使用参考文献。