如何区分类成员函数和数据成员的声明

时间:2016-10-12 06:56:53

标签: c++ class syntax forward-declaration

如何告诉编译器这是一个函数声明而不是数据成员:

typedef std::basic_ostringstream<char16_t> foostringstream;
class TextStream: public foostringstream {
    public:
        std::forward_list<TextInstruction> output();
};

问题在于编译器(VS2015.3)出于某种恼人的原因,它的印象是它是一个变量。

1 个答案:

答案 0 :(得分:0)

问题是你正在创建一个空类,这不是编译器问题。 想象一下,你做了类似

的事情
class Empty{}
int main() {
  Empty a,b;
  assert (&a == &b);
  cout << sizeof(Empty)
}

你期望结果是什么?

编译器总是添加填充以确保&amp; a!=&amp; b,这意味着sizeof Empty将是&gt; 0(通常为1)。