#c #macos #constants
#c #macos #константы
Вопрос:
C , OS X, Carbon API.
Мне нужно передать const FSSpec
методу FSpOpenDF
У меня есть следующее:
const FSSpec fsSpec = fFileSpec.GetFSSpec();/* is declared as FSSpec GetFSSpec() const; */
err = ::FSpOpenDF(fsSpec, 1, amp;refNumber);
Но я получаю ошибку, которая:
error: cannot convert 'const FSSpec' to 'const FSSpec*' for argument '1' to 'OSErr FSpOpenDF(const FSSpec*, SInt8, short int*)'
Я попытался определить как:
const FSSpec* fsSpec = fFileSpec.GetFSSpec();
и это не помогает. Очевидно, я в замешательстве.
Кто-нибудь может объяснить концепцию, которую я упускаю?
Ответ №1:
Попробуйте это:
FSSpec fsSpec = fFileSpec.GetFSSpec();
err = ::FSpOpenDF(amp;fsSpec, 1, amp;refNumber);
Вы, кажется, понимаете необходимость получения адреса объекта при вызове функции, требующей указателя, как вы это делаете с refNumber
; то же самое просто нужно сделать с fsSpec
объектом, поскольку ожидается const FSSpec*
.
Ответ №2:
Вероятно, FSpOpenDF
функции нужен указатель FSSpec. Попробуйте:
err = ::FSpOpenDF(amp;fsSpec, 1, amp;refNumber);