Преобразование в const в C ++ - PullRequest
0 голосов
/ 12 мая 2011

C ++, OS X, Carbon API.

Мне нужно передать const FSSpec методу FSpOpenDF

У меня так:

const FSSpec fsSpec = fFileSpec.GetFSSpec();/* is declared as FSSpec GetFSSpec() const; */

err = ::FSpOpenDF(fsSpec, 1, &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();  

и это не помогает. Очевидно, я в замешательстве.

Кто-нибудь может объяснить концепцию, по которой я скучаю?

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Вероятно, функция FSpOpenDF хочет указатель FSSpec.Попробуйте:

err = ::FSpOpenDF(&fsSpec, 1, &refNumber);

2 голосов
/ 12 мая 2011

Попробуйте это:

FSSpec fsSpec = fFileSpec.GetFSSpec();
err = ::FSpOpenDF(&fsSpec, 1, &refNumber);

Вы, кажется, понимаете необходимость брать адрес объекта при вызове функции, требующей указатель, как вы делаете это с refNumber;то же самое нужно сделать с объектом fsSpec, поскольку ожидается const FSSpec*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...