Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在.h中声明并在.cpp中初始化_C++ - Fatal编程技术网

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

C++ 在.h中声明并在.cpp中初始化,c++,C++,我想在my.h中声明一个指针,并在.cpp中初始化它。例如,int指针: My.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_T

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

My.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();
};
#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
{}
像这样:

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中


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

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

telo[0] = 0;
telo[1] = 1;
telo[2] = 2;
在您的.cpp中


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

这是一种方法:

#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;
}
#包括
类钙豆腐低
{
私人:
std::阵列telo;
公众:
低钙豆腐();
};
低钙豆腐
:telo()
{

对于(无符号i=0;i这是一种方法:

#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;
}
#包括
类钙豆腐低
{
私人:
std::阵列telo;
公众:
低钙豆腐();
};
低钙豆腐
:telo()
{

对于(unsigned i=0;i,如果要使用所有项的常量值初始化大型数组,可以使用以下方法:

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

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

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

值是什么?如果它们是0到99,那么您可以只使用for循环。或者只使用动态容器(向量、列表等)这取决于值是什么,例如,如果值都是零,那么您可以只写telo={},但是如果它们是随机的,那么很明显,它们中的每一个都必须写在C++11中不应该有括号的地方。@chris:它没有括号。也许你的意思是它应该有一组括号?我永远记不起它在C++11中是什么样子的。:)值是什么?如果它们是0到99,那么您可以只使用for循环。或者只使用动态容器(向量、列表等)这取决于值是什么,例如,如果值都是零,那么您可以只写telo={},但是如果它们是随机的,那么很明显,它们中的每一个都必须写在C++11中不应该有括号的地方。@chris:它没有括号。也许你的意思是它应该有一组括号?我永远记不起它在C++11中是什么样子的。:)这是
int
数组,不是
int
指针。这是
int
数组,不是
int
指针。