2013-03-30 81 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

相關問題