"error C2039: '<メンバ名>': '<クラス名>' のメンバーではありません。" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
error C2039: '_popen': '_iobuf' のメンバーではありません。C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt\corecrt_wstdio.h(26): note: '_iobuf' の宣言を確認してください

ソース(バグ有り):

//パイプを作成し、コマンドを実行するサンプル
#include <stdio.h>

int main()
{
FILE *fp;
//バッファを作成
char buff[256];
//パイプを作成 "r"によりコマンドの標準出力を読み取り
fp->_popen("dir","r");
while(fgets(buff,sizeof(buff),fp)!=NULL)
{
printf("%s",buff);
}
_pclose(fp);
return 0; }


原因:
クラスのメンバが指定されましたが、それはメンバではありません。

あるいは必要な include ファイルが include されていません。

対処:
クラスの定義を確認し、メンバを確認します。

あるいは必要なファイルが include されていることを確認します。


ソース(修正済み):

//パイプを作成し、コマンドを実行するサンプル
#include <stdio.h>

int main()
{
FILE *fp;
//バッファを作成
char buff[256];
//パイプを作成 "r"によりコマンドの標準出力を読み取り
fp=_popen("dir","r");
while(fgets(buff,sizeof(buff),fp)!=NULL)
{
printf("%s",buff);
}
_pclose(fp);
return 0; }

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]