C++ 为什么gcc编译这个,而msvc不';T

C++ 为什么gcc编译这个,而msvc不';T,c++,visual-studio,gcc,compiler-errors,compilation,C++,Visual Studio,Gcc,Compiler Errors,Compilation,这是我的班级 class ContainerStack{ public: int getCapacity(); int getSize(); const Container& at(int height); void take(Container aContainer); Container give(); private: std::vector<Container> containers(); }; GCC编译所有内容都

这是我的班级

class ContainerStack{
public:
    int getCapacity();
    int getSize();
    const Container& at(int height);
    void take(Container aContainer);
    Container give();

private:
    std::vector<Container> containers();
};

GCC编译所有内容都没有问题,但在使用Visual Studio 2017时,我得到的E0153表达式必须有类类型错误。有没有办法解决这个问题?

您将
容器定义为一个返回向量的函数:

std::vector<Container> containers();
std::vector containers();
将其固定到:

std::vector<Container> containers;
std::向量容器;
为什么gcc编译这个而msvc不编译


我怀疑您在将代码从gcc移植到msvc时弄错了。

请提供一个示例和完整的错误消息。什么是
Container
?…以及您使用的编译器版本但是当使用Visual Studio 2017时,我得到的E0153表达式必须具有类类型错误。请发布错误消息的确切文本。从“输出”选项卡而不是“错误”列表复制它。还要创建一个最小的示例代码。您使用的是什么gcc?这里不编译:在上不编译。这就是问题所在,谢谢你的帮助。不知怎的,我的定义在两个项目之间被混淆了。@MichałTęgi比说“谢谢”更好,你可以点击答案分数下的复选标记将其标记为已接受。很高兴能帮上忙。不知怎么的,我的定义在两个项目之间纠结了。版本控制(比如git)有助于实现这一点。
std::vector<Container> containers;