2012-08-16 107 views
3

我很想盡量減少對第三方頭文件的依賴(kiss_fft.h)。在頭文件中定義了一個匿名結構,我真的很想在我的代碼中交替使用我自己的別名(或某些模糊的等價物)。匿名c類型的C++別名

外部定義,我不該改變:

typedef struct { 
    float r; 
    float i; 
} kiss_fft_cpx; 

我第一次嘗試:

typedef kiss_fft_cpx FTBuffer; 
// yields error: 'kiss_fft_cpx' does not name a type 

我的第二次嘗試:

struct FTBuffer : public kiss_fft_cpx {}; 
// yields error: expected class-name before '{' token 

我想我的問題是,kiss_fft_cpx是一個變量而不是一個類型,但也許有一個工具你知道...嗎?

我在這裏搜索瞭解決方案,並在更廣泛的網絡上,但沒有什麼是跳出來的。我希望這只是我的知識上的一個缺口,但接受可能沒有可取的解決方案。提前樂觀感謝!

+0

您是否正在使用支持C++ 11功能(如「decltype」)的編譯器? – 2012-08-16 14:28:08

+0

'kiss_fft_cpx'是一個類型名稱,應該可以用作基類和'typedef's。 [Example。](http://liveworkspace.org/code/04fe7d6c236d4f9e59029b8440048885) – Xeo 2012-08-16 14:28:46

+0

在VC++ 2010中無問題工作 – 2012-08-16 14:30:13

回答

0
typedef struct { 
    float r; 
    float i; 
} kiss_fft_cpx; 

typedef kiss_fft_cpx FTBuffer; 

int main() 
{} 

既適用於C++又適用於C,所以問題是你做的其他事情(或者說,不要做)。

+0

我想信用應該去EitanT,他們的手指權利於我的具體菜鳥錯誤,但非常感謝您的答案。 – mosi 2012-08-16 15:36:22

+0

@mosi:對於這種性質的問題,沒有功勞。我只是認爲(想到)這個問題應該得到回答。不,這不是一個給定的代碼也可以很好地作爲C,雖然它在這種情況下。 – 2012-08-16 15:40:14