我对指针有一些问题,我认为那些是标准问题,但是我越是无法解决它们......
我的困难是定义一个类的向量向量( 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]) );
}
答案 0 :(得分:0)
我希望下面的例子能解释为什么我需要 b 作为指针。
您不需要 b 作为指针。使用参考参数。
干杯&amp;第h。,
答案 1 :(得分:0)
标记的行与g ++ 4.5编译良好,但对solve_regression的调用则没有。确保CRegression
的{{1}}构造函数有效。另外,请仔细阅读https://isocpp.org/wiki/faq/references#pointers-and-references并了解如何正确使用参考文献。