Я думаю, это то, что вы ищете:
CreditCard.fs
namespace StackOverflow
type CreditCard() =
member val ExpirationDate = "" with get, set
member val ExpirationYear = "" with get, set
member val Number = "" with get, set
member val Cvc = "" with get, set
type CustomerRequest() =
member val Method = "" with get, set
member val CreditCard = new CreditCard() with get, set
Program.fs
open System
open StackOverflow
[<EntryPoint>]
let main argv =
let body = new CustomerRequest(Method = "CREDIT_CARD",
CreditCard = CreditCard(
ExpirationDate = "06",
ExpirationYear = "2022",
Number = "4012001037141112",
Cvc = "123"
))
0
Я не знаю много о F # так что, возможно, использование Records, как использует Дэвид Шоу, лучше в дизайне. Но в основном это позволит вам сделать это без конструктора параметров и без изменяемого значения не свойства в вашем типе.
shared_ptr <>:: сброс () отбросит refcount одним. Если это приведет к опускающемуся до нуля количеству, то ресурс, на который указывает shared_ptr <>, будет освобожден.
Таким образом, я думаю, что ответ для Вас, да, который будет работать. Или можно просто позволить screenFont переменной быть разрушенной из-за выпадения из объема или что бы то ни было, если это - то, что собирается произойти.
Чтобы быть ясным, нормальное использование shared_ptr <> состоит в том, что Вы позволяете ему быть разрушенным естественно, и он будет иметь дело с refcount и освобождением ресурса, когда он опустится до нуля естественно. сброс () только требуется, если бы необходимо выпустить тот конкретный экземпляр совместно используемого ресурса, прежде чем shared_ptr <> был бы естественно разрушен.
B Mike, отвеченный Ваш вопрос, таким образом, я просто прокомментирую Ваш код. Если TTF_OpenFont
не возвращает пустой указатель, или если TTF_CloseFont
может обработать аннулирует безопасно, Вам не нужен a CloseFont
класс вообще, просто используйте &TTF_CloseFont
.