【问题标题】:Left of . must have class/struct/union的左边 。必须有类/结构/联合
【发布时间】:2013-03-30 01:39:19
【问题描述】:

我正在尝试将着色器文件加载器添加到我的程序中。我正在从“加载着色器”部分下的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;
}

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

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

【问题讨论】:

    标签: c++ file undefined ifstream istream


    【解决方案1】:

    std::ifstream 位于您未包含的 fstream 标头中。将#include &lt;fstream&gt; 添加到您的头文件或源文件中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多