2013-03-30 48 views
1

我想让着色器文件加载程序进入我的程序。我正在从“Loading Shader”部分复制http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/loading.php中的代码。下面我有一个更简化的非工作版本。左侧。必须有类/结构/工会

我检查了,我已经囊括了所有的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; 
} 

的错误e文件放在“sfile.good()”中。 我不确定第一个错误,因为我不明白我如何使用未定义的类型。我认为它应该只是使用ifstream。我没有看到可以包含在“basic_istream”中的头文件。根据http://en.cppreference.com/w/cpp/io/basic_istream,它应该在我包含的is​​tream的头文件中。

对于第二个错误,我查看了一些类似的问题,并尝试使用“ - >”。我发现另一个常见的问题是一个变量可能意外地被声明为一个函数,但我不认为它是这样。我该如何解决这些错误以及导致它们的原因?

回答

4

std::ifstream是在fstream标题,你没有包括在内。将#include <fstream>添加到您的标题或源文件。

+0

谢谢!我摆脱了其他包括并添加fstream。它现在建立!你怎么知道它是在fstream?它甚至没有在http://www.cplusplus.com/reference/fstream/ifstream/和http://www.cplusplus.com/reference/fstream/fstream/中提及,完全不同。是多个版本还是什么? – AAB

+2

@AABoucher这是一个**臭名昭着的**不可靠的网站,尽管谷歌排名很高。考虑http://en.cppreference.com/w/cpp/io/basic_fstream –

+0

@DrewDormann谢谢,我从来不知道。它解释了很多。 – AAB

相关问题