【问题标题】:Left of '.size' must have class/struct/union'.size' 的左边必须有类/结构/联合
【发布时间】:2013-08-29 18:19:48
【问题描述】:

仍然无法让这个工作。请帮忙!

template <typename T>
class Container{
public:
    ...

    friend ostream& operator<<(ostream& ostr, const Container<T>& C)
    {
        for(size_t i=0; i!= data.size(); i++) // ERROR
            ostr<<data[i]<<" "; 
        return ostr;
    }

private:
    vector<T> data;
};

【问题讨论】:

  • 嗯? MVP 在哪里?
  • 我在这里看不到任何 MVP,但 dataC 的一部分。
  • @OliCharlesworth data.size() throws: "left of '.size' must have class/struct/union"
  • 当然。但这与 MVP 无关。
  • @InnocentRetard 这不是 MVP。 MVP指的是“函数原型”和“构造函数初始化变量”之间的歧义。

标签: c++ templates


【解决方案1】:

dataC 的成员,因此应以C.data 访问(请记住,您的operator&lt;&lt;free function 而不是Container 的成员):

    for(size_t i = 0; i != C.data.size(); ++i)
        ostr << C.data[i] << " "; 

【讨论】:

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