質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

Q&A

解決済

4回答

3149閲覧

interfaceというクラス名が分かりません。

watarusugimoto

総合スコア47

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

0グッド

0クリップ

投稿2016/11/10 12:42

OpenCVで
###OpenCVのcap_dshow.cppというファイルを理解したい
現在、DirectShowで読み込んだ映像をOpenCVで解析したいと考えていますが、なかなか思うようにいきません。
そこで、OpenCVのソースコードを読んでいるのですが、分からない部分があります。
分からないソース部分は以下の通りです。

###該当のソースコード

C++

1interface IEnumPIDMap : public IUnknown 2{ 3public: 4 virtual HRESULT STDMETHODCALLTYPE Next( 5 /* [in] */ ULONG cRequest, 6 /* [size_is][out][in] */ PID_MAP *pPIDMap, 7 /* [out] */ ULONG *pcReceived) = 0; 8 9 virtual HRESULT STDMETHODCALLTYPE Skip( 10 /* [in] */ ULONG cRecords) = 0; 11 12 virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; 13 14 virtual HRESULT STDMETHODCALLTYPE Clone( 15 /* [out] */ IEnumPIDMap **ppIEnumPIDMap) = 0; 16}; 17 18interface IMPEG2PIDMap : public IUnknown 19{ 20 virtual HRESULT STDMETHODCALLTYPE MapPID( 21 /* [in] */ ULONG culPID, 22 /* [in] */ ULONG *pulPID, 23 /* [in] */ MEDIA_SAMPLE_CONTENT MediaSampleContent) = 0; 24 25 virtual HRESULT STDMETHODCALLTYPE UnmapPID( 26 /* [in] */ ULONG culPID, 27 /* [in] */ ULONG *pulPID) = 0; 28 29 virtual HRESULT STDMETHODCALLTYPE EnumPIDMap( 30 /* [out] */ IEnumPIDMap **pIEnumPIDMap) = 0; 31}; 32 33

###interfaceというクラス名は何なのか
これまでclassしか学んでこなかったため、interfaceというクラス名は何なのか分かりません。
ググってみたのですが、interfaceというクラス名は出てきませんでした。
どこかで設定されている変数か何かなのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

DirectShowはCOMベースのシステムでインターフェース定義をIDLから変換するとそんなソース吐きます。
Windows Kitの combaseapi.h で #define interface struct とされています。

投稿2016/11/10 13:20

toki_td

総合スコア2850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

opencvというより、実体はWindows SDK側なんだけど。
参考に'qedit.h' missing in current Windows SDK v7.0

Ansの所が参考。

投稿2016/11/10 13:43

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

javaならばともかくC++ではinterfaceという予約語は聞いたことがありません。

ちなみにjavaでは「非常に制限の強いclass」みたいなものです。クラスにおける「継承」機能を、interfaceでは「実装」と呼びます。javaにおけるこの最たる存在価値は「多重実装ができること」です。javaのクラスは多重継承ができません。

C++に関してはそもそも多重継承ができます。ですので、interfaceという概念は必要性があまりなく、抽象クラスで十分目的を達成します(なお、javaにも抽象クラスは別にあります)。

多分、javaのinterfaceと同じように使うことを明示化したかったとかだと思います。

投稿2016/11/10 13:21

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

どこかで #define interface class とかやってんじゃねーかな?

投稿2016/11/10 12:47

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

watarusugimoto

2016/11/10 16:03

なるほど、ソースファイルが沢山あって今のとこ良くわからないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問