首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误联合:“.size”的左侧必须有类/结构/C2228

错误联合:“.size”的左侧必须有类/结构/C2228
EN

Stack Overflow用户
提问于 2010-11-14 10:55:08
回答 1查看 40.8K关注 0票数 18

当调用向量的size()时,我得到了这个编译器错误。为什么?

代码语言:javascript
复制
#include <vector>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <cassert>


using namespace std;

class Vertex {

    float firstValue;
    float secondValue;
    float thirdValue;

    Vertex (float first, float second, float third){
          firstValue=first;
          secondValue=second;
          thirdValue=third;
    }

};


int main()
{
    cout<<"This program loads a 3D .off object. \nEnter the name of the file that describes it "<<endl;
    string inputFileName;
    getline(cin, inputFileName);

    ifstream inputFileStream;

    inputFileStream.open(inputFileName.data());
    assert (inputFileStream.is_open());

    string actualLine;

    for(;;){

        inputFileStream>>actualLine;

        istringstream actualLineStream(actualLine);



        std::vector<float> results( std::istream_iterator<int>(actualLineStream)
                        , std::istream_iterator<int>() );

       int resultsIndex=0;
       int resultsSize=results.size(); //WHY??

       while (resultsIndex<resultsSize){

         cout<<results[resultsIndex]<<endl;
       }


        if (inputFileStream.eof()) break;

    }


    ofstream outputChannel;

    while (true){} // to keep on console view 
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2010-11-14 11:06:52

我想你撞到this bugaboo了。您已经成功地将results声明为一个返回std::vector<float>的新函数。如果我将声明results的代码行更改为:

代码语言:javascript
复制
std::vector<float> results = std::vector<float>( std::istream_iterator<int>(actualLineStream), std::istream_iterator<int>() );

我可以编译这段代码(和GCC一起,YMMV)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4175971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档