2

私は初心者の C++ プログラマーで、C++ Builder XE3 を使用しています。Delphi の経験が豊富で、INetSharingManager を使用しようとしていますが、次のエラー メッセージが表示されます。

E2352 Cannot create instance of abstract class 'INetSharingManager'

これは私が使用するコードです:

INetSharingManager* NSManager = new INetSharingManager();

私の質問は次のとおりです。

  • C++ で INetSharingManager を適切に使用するには?
  • DelphiでINetSharingManagerを使用する方法(可能であれば)

事前に感謝します。

4

2 に答える 2

1

これはインターフェースであり、そのようにインスタンス化することはできません。インターフェースには実装がないことに注意してください。したがって、それらをインスタンス化する機会がまったくないことは明らかです。インターフェイスを実装する別のものをインスタンス化する必要があります。

ここにあるC++ サンプル コードは、これらの人物の 1 人を作成する方法を示しています。重要な抜粋は次のとおりです。

CoInitialize (NULL);

// init security to enum RAS connections
CoInitializeSecurity (NULL, -1, NULL, NULL, 
                      RPC_C_AUTHN_LEVEL_PKT, 
                      RPC_C_IMP_LEVEL_IMPERSONATE,
                      NULL, EOAC_NONE, NULL);

INetSharingManager * pNSM = NULL;    
HRESULT hr = ::CoCreateInstance (__uuidof(NetSharingManager),
                                 NULL,
                                 CLSCTX_ALL,
                                 __uuidof(INetSharingManager),
                                 (void**)&pNSM);

このコードは、このライブラリに関する Microsoft の公式ドキュメントから引用されています。そのドキュメントをよく読む必要があります。

Delphi からこのインターフェイスを使用する方法を尋ねます。そうですね、C++ で行うのとまったく同じことを行います。CoCreateInstanceインターフェイス参照を取得するために呼び出します。C++ から実行する方法がわかったので、Delphi に変換するのは簡単です。

于 2013-10-18T23:27:06.707 に答える