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