在 .h 中声明,在.cpp中初始化

Declare in .h and initialize in .cpp

本文关键字:初始化 cpp 声明      更新时间:2023-10-16

我想在我的.h中声明一个指针,并在.cpp中初始化它。例如一个 int 指针:

我的 .h 类文件:

#pragma once
#include <iostream>
#include <stdio.h>
#include <stdint.h>
using namespace std;
class Calc_ToF_low
{
private: 
    int telo[3];
public:
    Calc_ToF_low(void);
    ~Calc_ToF_low(void);
    double * CalcToF(int16_t * señal, int fs);
    long double * filter(long double *ganancias, long double *coeficientes, double *señal,int lensignal, int L, int control);
    void signal_p1_lowf(void);
    void avg_p1_lowf(void);
    void time_est();
};

我的.cpp类文件:

#include "Calc_ToF_low.h"
Calc_ToF_low::Calc_ToF_low(void)
{
    telo[3]={0,1,2};
}

我该怎么做?

像这样:

Calc_ToF_low::Calc_ToF_low() // note no need to say void in C++
{
    telo[0]=0;
    telo[1]=1;
    telo[2]=2;
}

或者,如果您可以使用 C++11,则类似这样的东西可能会起作用:

Calc_ToF_low::Calc_ToF_low()
  : telo{{0,1,2}} // initializer list, will not work in "old" C++98
{}

您可以通过键入以下内容为其分配值:

telo[0] = 0;
telo[1] = 1;
telo[2] = 2;

在你的.cpp。

它可能不适用于大型数组,但您可能应该从文件中分配值。

如果要使用所有项的常量值初始化大型数组,则可以使用此方法:

Calc_ToF_low::Calc_ToF_low(){
    memset(telo, 0, sizeof(telo));  //0 is the constant value
}

如果要将大型数组初始化为一组没有模式的值:

int defaultTeloData[TELO_NUMITEM] = {2,4,1,5,6,1,7,82,41,6,134,88,1};
Calc_ToF_low::Calc_ToF_low(){
    memcpy(telo, defaultTeloData, sizeof(telo)); 
}

如果数组值具有模式,请使用循环和一些公式或构造函数。

Calc_ToF_low::Calc_ToF_low(){
    for(int a = 0; a sizeof(telo)/sizeof(telo[0]); a++){
          telo[a] = dataFormulaForTelo(a);  
    }
}

这是您可以做到的一种方法:

#include <array>
class Calc_ToF_low
{
private: 
  std::array<int, 3> telo;
public:
  Calc_ToF_low();
};
Calc_ToF_low::Calc_ToF_low()
: telo()
{
  for(unsigned i = 0; i<telo.size(); ++i)
    telo[i] = i;
}