[英]Why isn't it possible to have an anonymous object as argument in a function argument list? C++
例如:
struct test
{};
void thing(test())
{}
int main()
{
thing(test());
}
這段代碼會給我錯誤; 但是,下一個示例不會給我錯誤:
void thing(int())
{}
int main()
{
thing(int());
}
我的主要問題是,為什么第一個示例不可行而第二個示例卻不可行? 最終,雙方test
和int
的類型,所以我想不出為什么聲明的一個匿名對象test
的thing
函數參數列表是不可能的,而聲明類型的匿名對象int
的thing
函數的參數列表。
有可能 只是您做錯了。
這是一個帶有類型為test
的未命名參數的函數的聲明:
void thing(test);
這是一個帶有未命名參數的函數的聲明,該參數的類型為pointer-to-function-returning- test
:
void thing(test());
您需要前者 ,而不是后者。
您的第二個代碼示例確實起作用 ,這是因為int()
為0
是有效的空指針常量 ,可以用來初始化函數指針; 該示例在將int()
交換為其他整數后立即中斷 ,或者如果您在完全兼容的C ++ 14編譯器中運行代碼(因為C ++ 14這樣做是為了使0
而不是int()
有效)空指針常量 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.