1

したがって、このコンストラクターの要件を適切に満たすことができないようです。

DIVA_STATUS DIVA_getObjectDetailsList (
IN BOOL                   pFirstTime,
IN time_t                 *initialTime,
IN int                    pListType,
IN int                    pObjectsListType,
IN int                    pMaxListSize,
IN DIVA_STRING            pObjectName,
IN DIVA_STRING            pObjectCategory
IN DIVA_STRING            pMediaName
DIVA_LEVEL_OF_DETAIL      pLevelOfDetail,
IN vector<DIVA_STRING>    listPosition,
OUT vector<DIVA_OBJECT_DETAILS_LIST>      *&pObjectDetailsList
)

問題は、クラスのベクトル (???) を出力する最後の行にあるようです。私は C++ に少し慣れていないので、参照呼び出し (*&) を逆参照する理由が思い出せません。

DIVA_OBJECT_DETAILS_LIST は、以下に示すクラスです。

class DIVA_OBJECT_DETAILS_LIST {
public:
int                            listType;
DIVA_STRING                    siteID;
vector<DIVA_STRING>            *listPosition;
vector<DIVA_OBJECT_INFO>       *objectInfo;
vector<DIVA_OBJECT_TAPE_INFO>  *objectTapeInfo;
};

VC++ 2008 Express を使用してコンパイルしようとすると、次のようになります。

1>Compiling...
1>initiator.cpp
1>.\initiator.cpp(148) : error C2100: illegal indirection
1>.\initiator.cpp(148) : error C2665: 'DIVA_getObjectDetailsList' : none of the 2 overloads could convert all the argument types
1>        z:\Mediavault1\Automation\DIVA_API\DIVArchiveAPI\CppAPI Test\include\DIVAapi.h(2191): could be 'DIVA_STATUS DIVA_getObjectDetailsList(bool,time_t,int,int,int,DIVA_STRING,DIVA_STRING,DIVA_STRING,DIVA_LEVEL_OF_DETAIL,std::vector<_Ty>,DIVA_OBJECT_DETAILS_LIST *&)'
1>        with
1>        [
1>            _Ty=DIVA_STRING
1>        ]
1>        while trying to match the argument list '(bool, time_t, int, int, int, DIVA_STRING, DIVA_STRING, DIVA_STRING, DIVA_LEVEL_OF_DETAIL, std::vector<_Ty>, DIVA_OBJECT_DETAILS_LIST *)'
1>        with
1>        [
1>            _Ty=DIVA_STRING
1>        ]

コンストラクターの呼び出し方法は次のとおりです。

cr = DIVA_getObjectDetailsList (
                   _firstTime,
                   (time_t)_initDate,
                   (int)DIVA_OBJECTS_LIST,
                   (int)DIVA_OBJECTS_CREATED_SINCE,
                   _size,
                   _name,
                   _category,
                   _group,
                   DIVA_INSTANCE,
                   *_listType.listPosition,
                   &*_listType
                   );

_listType は DIVA_OBJECT_DETAILS_LIST です。参照渡しでポインタを渡すにはどうすればよいですか?

4

1 に答える 1

2

問題は、最後から 2 番目の引数にあるようです。(ポインターではなく)を渡す必要があるstd::vector<DIVA_STRING>*ときに、 a を渡しています。std::vector<DIVA_STRING>

しかし、最後の引数についての理解を助けるためにvector<DIVA_OBJECT_DETAILS_LIST>*&、「ポインタへの参照vector<DIVA_OBJECT_DETAILS_LIST>」型があります。つまり、ポインターを渡す必要があり、参照によって渡されます。

于 2013-05-10T20:05:41.910 に答える