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

时间:2014-01-17 12:34:25

标签: c++

我想在我的.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};
}

我该怎么做?

4 个答案:

答案 0 :(得分: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
{}

答案 1 :(得分:1)

您只需键入以下内容即可为其指定值:

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

在你的.cpp。

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

答案 2 :(得分:0)

这是你可以做到的一种方式:

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

答案 3 :(得分:0)

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

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