在C++转换为常量

Converting to const in C++

本文关键字:常量 转换 C++      更新时间:2023-10-16

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

这无济于事。所以显然我很困惑。

谁能解释我缺少的概念?

试试这个:

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

似乎明白在调用一个需要指针的函数时需要获取对象的地址,就像你用refNumber一样;同样的事情只需要对fsSpec对象做,因为需要const FSSpec*

可能FSpOpenDF函数需要一个 FSSpec 指针。尝试:

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