假設我有一個指向多型物件的指標:
TYPE, ABSTRACT:: ab
ENT TYPE
TYPE, EXTENDS(ab):: co
INTEGER:: i
ENT TYPE
Class(ab), POINTER:: foo
如何在代碼的可執行部分foo將指向的物件初始化為物件co?我在想類似的事情
foo => co(1) ! WRONG
但這是錯誤的。
uj5u.com熱心網友回復:
指標只能用帶有save屬性的目標或用null(). 如果您的意思是在宣告部分編譯期間的初始化。
在代碼的可執行部分,您當然可以使指標指向一個物件。但是您需要一個具有該target屬性的實際物件,或者您需要使用該allocate()陳述句創建一個匿名目標。
co(1)是運算式或運算式的值結果。你不能指向它,它沒有指標屬性。您可以使用此值分配匿名目標
allocate(foo, source=co(1))
考慮使用allocatable而不是 a pointer,它們應該是強烈首選。如果你可以使用 allocatable,它就像
foo = co(1)
感謝分配中的自動(重新)分配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/356272.html
下一篇:如何在C中解決這個指標回圈?
