2014-01-17 2 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; 
} 
Смежные вопросы