0

varタイプの変数をまたはvar*に変換するにはどうすればよいですかvar&

var クラスのオブジェクトを取る関数を使用する必要があります (クラスがあるとします)。サンプルコードは次のように与えられました:-

testFunc(false, namespace1::namespace2::var(), 100);

関数宣言では、2 番目のパラメーターの型が であると書かれており、ornamespace1::namespace2::var&を作成できますが、どのように作成すればよいでしょうか?namespace1::namespace2::varnamespace1::namespace2::var*namespace1::namespace2::var&

あまりにも基本的な質問であることはわかっていますが、理解できませんでした。

編集:
just を使用してみましvarたが、いくつかの奇妙なエラーが発生します。私が使用している機能に何らかの障害があると確信しています。ここにエラーがあります: -

Error   3   error C2825: 'CType': must be a class or namespace when followed by '::'
Error   4   error C2039: 'TypeCode' : is not a member of '`global namespace''
Error   5   error C2146: syntax error : missing ',' before identifier 'TypeCode'
Error   6   error C2065: 'TypeCode' : undeclared identifier 
Error   7   error C3203: 'CustomType' : unspecialized class template can't be used as a template argument for template parameter 'Base', expected a real type   

編集 2

複雑なので、実際のコードを含めると答えにくいと思いました。でも参考になれば見てください。実際の関数のシグネチャは次のようになります:-

virtual bool opRaiseEvent(bool reliable, const Common::Hashtable& parameters, nByte eventCode, nByte channelID=0, int* targetPlayers=NULL, short numTargetPlayers=NULL);

サンプルコードは次のような関数を使用しました:-

mLoadBalancingClient.opRaiseEvent(false, ExitGames::Common::Hashtable(), 100);

これは正常に機能していました。しかし、HashTable にデータを追加したいので、そのオブジェクトを作成して関数に渡す必要があります。ポインターまたは通常の変数を受け入れません。HashTable() だけで動作する理由がわかりません。

4

3 に答える 3

3

これは、2 番目のパラメーターが参照によって渡されることを意味します。あなたは単に渡す必要があります:

namespace1::namespace2::var
于 2012-12-08T11:51:26.967 に答える
1

これはうまくいくはずです:

const Common::Hashtable param = namespace1::namespace2::var();
opRaiseEvent(false, param, 100);
于 2012-12-08T12:20:49.137 に答える
1
namespace1::namespace2::var v;
testFunc(false, v, 100);
于 2012-12-08T12:22:32.183 に答える