【发布时间】:2016-10-12 06:56:53
【问题描述】:
你怎么能告诉编译器这是一个函数声明而不是数据成员:
typedef std::basic_ostringstream<char16_t> foostringstream;
class TextStream: public foostringstream {
public:
std::forward_list<TextInstruction> output();
};
问题是编译器 (VS2015.3) 出于某种恼人的原因,认为它是一个变量。
【问题讨论】:
-
你是如何认为 VS 将其视为变量的?
-
它吐出这个:
warning C4820: 'Text::TextStream': '4' bytes padding added after data member 'Text::TextStream::output' -
@Warpspace:无法在上述 sn-p 上的 VS2015 Update 3 中重现。或许还有别的原因?
-
MSVC 不太可能将
output视为变量。只是为了它,你可以试试:std::forward_list<TextInstruction> (output)();(见周围的大括号)。 -
实际上我现在看到了:“警告 C4820:'TextStream':在数据成员 'TextStream::operator =' 之后添加了 '4' 字节填充”。所以,发生了一些奇怪的事情。
标签: c++ class syntax forward-declaration