作者a95297 (2+2=0)
看板C_and_CPP
标题[问题] typedef struct 的问题?
时间Fri May 29 20:15:35 2009
刚有稍微爬一下文~不过不确定我想的对不对!!
以下是我的程式:
#define MixtureNum 17
#define FeatDim 17
#define PatternNum 2
typedef struct{
double **GMMMean;
double **GMMVar;
}GMM;
GMM *Model;
Model=(GMM *)malloc(PatternNum*sizeof(GMM));
Model[index].GMMMean=(double **)malloc(MixtureNum*sizeof(double *));
Model[index].GMMVar=(double **)malloc(MixtureNum*sizeof(double *));
for(i=0;i<MixtureNum;i++){
Model[index].GMMMean[i]=(double *)malloc(FeatDim*sizeof(double));
Model[index].GMMVar[i]=(double *)malloc(FeatDim*sizeof(double));
}
.
.
. 以下略过!!
这样去compiler & linker 完全不会错~那如果我今天多加了这些东西在上面:
GMM *Model,*New_Model; (多加了 *New_Model 这项!! )
New_Model=(GMM *)malloc(1*sizeof(GMM));
New_Model.GMMMean=(double **)malloc(MixtureNum*sizeof(double *));
New_Model.GMMVar=(double **)malloc(MixtureNum*sizeof(double *));
for(i=0;i<MixtureNum;i++){
New_Model.GMMMean[i]=(double *)malloc(FeatDim*sizeof(double));
New_Model.GMMVar[i]=(double *)malloc(FeatDim*sizeof(double));
}
在这样情况下 compiler 会出现4个错误 都是显示
"error C2228: left of '.GMMMean' must have class/struct/union type"
"error C2228: left of '.GMMVar' must have class/struct/union type"
"error C2228: left of '.GMMMean' must have class/struct/union type"
"error C2228: left of '.GMMVar' must have class/struct/union type"
会出现错误是因为 struct 在C++里面的资料型态都为public的关系吗?
因为它好像只认得Model里面的东西 不认得New_Model里面的东西!!
如果真是这样 那如果我要宣告ㄧ个跟GMMㄧ模一样的结构只能再重新定义罗!?
ex:
typedef struct{
double **BBB;
double **CCC;
}TTT;
TTT *New_Model;
.
.
.
这样对吗? 麻烦大家帮我解惑一下!! thanks!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.124.72.230
1F:推 littleshan:改 New_Model->GMMMean,因为 New_Model 是 pointer 05/29 20:18
2F:→ littleshan:建议你先看一下基本语法的书,不要乱猜错误原因 05/29 20:18
3F:→ a95297:我有点搞混了~在正常结构下~结构定义的变数要存取是透过"." 05/29 21:06
4F:→ a95297:来存取~而结构定义之指标才是透过"->"来间接存取不是吗@@? 05/29 21:06
5F:推 Ebergies:不是 05/29 21:14
6F:推 StormWolf:New_Model是指标变数阿 所以要透过 -> 取得成员资料... 05/30 14:11
7F:→ StormWolf:不然你高兴用(*New_Model).xxx或New_Model[0].xxx也可.. 05/30 14:14