2013-12-17 50 views
0

在我的C++應用程序我有有這個定義,它aaa.h文件:C++錯誤C2061 - typdef定義

typedef struct 
{ 
    int a; 
    int b; 
} CCC; 

typedef struct _DDD 
{ 
    unsigned int e; 
    CCC cccArray[100]; 
} DDD; 
在我aaa.cpp

我寫:

#include "aaa.h" 

DDD * dddPtr 

但隨後我得到了這個錯誤: 錯誤c2061:語法錯誤:標識符'DDD'

你能幫助解決這個問題嗎?

感謝

+2

** 1。**'_DDD'不是一個合法的標識符(它以一個下劃線開頭,後跟一個大寫字母,所以它保留給comiler和標準庫) - 嘗試改變它。 ** 2。**爲什麼你首先要做這件事?在C++中,結構標籤沒有單獨的名稱池,它們是普通名稱。 – Angew

回答

1

對於C++,你不需要那麼typedef「編struct - 只是這樣做:

struct CCC 
{ 
    int a; 
    int b; 
}; 

struct DDD 
{ 
    unsigned int e; 
    CCC cccArray[100]; 
}; 

這:

#include "aaa.h" 

DDD * dddPtr = NULL; // or = new DDD; 
1

第一件事:你應該終止聲明用分號;

二:在你的情況下,沒有必要對typedef S IN C++,只是定義class ES或struct數目字:

struct CCC 
{ 
    int a; 
    int b; 
}; 

struct DDD 
{ 
    unsigned int e; 
    CCC cccArray[100]; 
}; 

int main() 
{ 
    DDD * dddPtr; 
} 

編輯:此外,你應該確保每個成員適當地初始化爲CCCDDD提供合適的構造函數。