我有一些困難,重載轉換爲指向函數運算符類的指針。在代碼中,我要的是這樣的:重載類型轉換運算符,投射到函數指針
typedef int(*funcptrtype)(int);
struct castable {
operator funcptrtype() {return NULL;}
};
,但我希望能夠做到這一點,而不使用typedef
。如果你很好奇,我需要這個,因爲預C++模板11別名不可用(所以typedef
訣竅是不是在模板上下文選項...)
我通常會想到這個工作:
operator int(*)(int)() {return NULL;}
但它沒有。編譯器(G ++ 4.6.1)說:
error: ‘<invalid operator>’ declared as function returning a function
這工作:
int (* operator()())(int){return 0;}
但是你實際上超載operator()
返回一個函數指針:)
的標準說:
conversion-type-id不應代表函數類型,也不應代表 數組類型
但它沒有說函數指針類型(第一個代碼snipplet無論如何...)。
有沒有人知道正確的語法w/o typedef
?
http://stackoverflow.com/questions/6755673/c-conversion-operator-for-converting-to-function-pointer – 2012-04-15 21:45:43
@LuchianGrigore:你應該投關閉作爲一個完全重複的(而不是僅僅添加鏈接作爲一個評論,而另一方面要比做不到:)) – 2012-04-15 21:49:31
@DavidRodríguez-dribeas我沒有投票,因爲我不知道如果這是一個*確切*重複。 – 2012-04-15 21:52:19