c++通过引用传递类对象

c++ pass class object by reference?

本文关键字:对象 引用 c++      更新时间:2023-10-16

我在处理第三方dll、libs和头文件时遇到问题。我正在尝试调用一个函数,并让它返回一个值,但没有运气。这是假定要调用的函数。

bool COAuthSDK::GetRequestToken(CClientDetails和objClientDetails)

它有这个信息,它需要什么

名称输入/输出描述m_environment IN可选。可能的值为SANDBOX(默认值)和LIVE。m_strConsumerKey IN OAuth消费者密钥由E*TRADE提供m_strConsumerSecret IN OAuth消费者机密由E*TRADE提供m_strToken OUT如果成功则由函数返回m_strTokenSecret OUT函数成功返回m_strCallback IN可选;默认值为"oob"

这是COAuthSDK头。

#ifndef _OAUTHSDK_H_INCLUDED_
#define _OAUTHSDK_H_INCLUDED_
#include "ETCOMMONCommonDefs.h"
#include "ETCOMMONOAuthHelper.h"
using namespace std;
#ifdef OAUTH_LIBRARY_EXPORT // inside DLL
#   define OAUTH_API   __declspec(dllexport)
#else //outside DLL
#   define OAUTH_API   __declspec(dllimport)
#endif  //OAUTH_LIBRARY_EXPORT
class OAUTH_API COAuthSDK
{
public:
COAuthSDK(void);
virtual ~COAuthSDK(void);
bool GetRequestToken(CClientDetails &objClientDetails) throw (...);
bool GetAccessToken(CClientDetails &objClientDetails,string strVerifier) throw (...);
void RenewToken(CClientDetails &objClientDetails) throw (...);
void RevokeToken(CClientDetails &objClientDetails) throw (...);
string AuthorizeUrl(CClientDetails &objClientDetails) throw (...);
string GetProtectedResourse(CClientDetails &objClientDetails,string strUrl,       HttpMethodConstants httpMethod = GETMethod, string postParameters = NULL) throw (...);

};

#endif//_OAUTHSDK_H_INCLUDED_

和CClientDetails报头

#pragma once
#ifndef _CLIENTDETAILS_H_INCLUDED_
#define _CLIENTDETAILS_H_INCLUDED_
using namespace std;
#include "CommonDefs.h"
#ifdef COMMON_LIBRARY_EXPORT // inside DLL
#   define COMMON_API   __declspec(dllexport)
#else // outside DLL
#   define COMMON_API   __declspec(dllimport)
#endif  // COMMON_LIBRARY_EXPORT
class COMMON_API CClientDetails
{
public:
CClientDetails();
CClientDetails(string strConsumerKey,string strConsumerSecret,Environment environment);
virtual ~CClientDetails ();
Environment GetEnv();
void SetEnv(Environment env);
string GetConsumerKey();
void SetConsumerKey(string consumerKey);
string GetConsumerSecret();
void SetConsumerSecret(string consumerSecret);
string GetToken();
void SetToken(string token);
string GetTokenSecret();
void SetTokenSecret(string tokenSecret);
private :
Environment m_environment;
string m_strConsumerKey;
string m_strConsumerSecret;
string m_strToken;
string m_strTokenSecret;
string m_strCallback;
};
#endif//_CLIENTDETAILS_H_INCLUDED

以及我的主要CPP。

int _tmain(int argc, _TCHAR* argv[]){CClientDetails clientDetails;
CClientDetails objClientDetails;
GetRequestToken(CClientDetails &objClientDetails);
objClientDetails.SetEnv(SANDBOX);
objClientDetails.SetConsumerKey("1f5328f725dee654e0a4499f161b8fe4c6e");
objClientDetails.SetConsumerSecret("d39a8043cc0c7686920fd0655e47281e6a5");
objClientDetails.GetToken();
objClientDetails.GetTokenSecret();
cin.get();
cin.get();
return 0;
  }`

当我试图构建函数时,它说它在dll中,所以我知道我必须调用它。如果有人能帮忙,我将不胜感激。如果需要,这里是到构建站点的链接https://us.etrade.com/ctnt/dev-portal/getContent?contentUri=V0_Code-SDK指南VC

GetRequestToken(CClientDetails &objClientDetails);

不好。你需要像这样的东西

COAuthSDK sdk;
sdk.GetRequestToken(objClientDetails);

注意,这只是一些可能正确的语法,您应该从dox中了解如何获得sdk实例以供使用。