2014-01-17 32 views
0

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

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

我怎样才能做到这一点?

+1

这是一个'int'数组,而不是'int'指针。 –

回答

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

如果您的数组值为h作为模式,使用循环和一些公式或构造函数。

Calc_ToF_low::Calc_ToF_low(){ 

    for(int a = 0; a sizeof(telo)/sizeof(telo[0]); a++){ 
      telo[a] = dataFormulaForTelo(a); 
    } 
} 
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 
{} 
+0

是的,但如果我有100个值?有没有更多的方法? –

+0

这是什么值?如果他们是0到99,那么你可以使用for循环。 –

+0

或者,也许只是使用动态容器(向量,列表等) – Netwave

1

你可以只将值赋给它通过键入:

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

在您的.cpp。

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

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; 
} 
相关问题