1

プログラムにシェーダー ファイル ローダーを取り込もうとしています。http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/loading.phpの「Loading Shader」セクションのコードをコピーしています。以下に、より単純化された非動作バージョンがあります。

Web サイトの例に含まれるすべての ifstream ヘッダー ファイルが含まれていることを確認しましたが、次のエラーが発生します。

error C2027: use of undefined type 'std::basic_ifstream<_Elem,_Traits>'
error C2228: left of '.good' must have class/struct/union

私のヘッダーファイルは次のようになります

#pragma once
#include <iostream>     // std::cout, std::ios
#include <sstream>      // std::stringstream
#include <istream>

using namespace std;

class ShaderHandler
{
public:
    ShaderHandler(void);
    virtual ~ShaderHandler(void);
    unsigned long getFileLength(ifstream& sfile);
};

ソースは次のようになります。

#include "StdAfx.h"
#include "ShaderHandler.h"
#include <Windows.h>
#include <GL/gl.h>

ShaderHandler::ShaderHandler(void)
{
}
ShaderHandler::~ShaderHandler(void)
{
}

unsigned long ShaderHandler::getFileLength(ifstream& sfile){
    if( !( sfile.good() ) ){
        return 0;
    }

    return 0;
}

エラーは、「sfile.good()」のソース ファイルで発生します。未定義の型をどのように使用しているかがわからないため、最初のエラーについてはわかりません。ifstreamを使用するだけでよいと思いました。「basic_istream」に含めることができるヘッダー ファイルが表示されません。http://en.cppreference.com/w/cpp/io/basic_istreamによると、私が含めた istream のヘッダーにあるはずです。

2 番目のエラーについては、同様の質問をいくつか見て、「->」を使用してみました。別の一般的な問題は、変数が誤って関数として宣言されている可能性があることでしたが、それもそうではないと思います。これらのエラーを修正するにはどうすればよいですか? また、その原因は何ですか?

4

1 に答える 1

4

std::ifstream含まれfstreamていないヘッダーにあります。#include <fstream>ヘッダーまたはソース ファイルに追加します。

于 2013-03-30T01:41:31.077 に答える