2014-01-17 30 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; 
} 
相關問題