Преобразование в const в C

#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);