Visual C++ 中的错误 C3867

Posted

技术标签:

【中文标题】Visual C++ 中的错误 C3867【英文标题】:Error C3867 in visual c++ 【发布时间】:2014-01-29 18:27:46 【问题描述】:

我是编程初学者.... 当我尝试使用 Visual c++ 2012 编译此代码时,出现以下错误。 1>e:\item(2).cpp(158): error C3867: 'selection::option': function call missing argument list; use '&selection::option' to create a pointer to member

请给我一个解决方案

【问题讨论】:

欢迎来到 ***。如果您没有向我们提供足够的信息,我们将无法为您提供帮助。 您忘记发布您的代码... 在您至少提供问题的基本描述之前,没有人可以为您提供有意义的“解决方案”。如果没有适当的上下文,您发布的错误消息完全没有意义。 【参考方案1】:

根据documentation:-

您试图获取成员函数的地址,但未使用其类名和地址运算符限定成员函数。

你必须使用 :: 来限定函数名和类名以消除错误:-

你应该这样做:-

    &className::func1

而不是

    &func1 

但是,由于您是初学者,我想您可能忘记为函数调用提供参数。

【讨论】:

是什么让您决定 OP 首先要获取成员函数的地址? @AndreyT 查看文档链接。根据 OP 提供的信息,我们只能大致猜测 OP 想要做什么。 链接中的文档适用于错误 C3867,这是编译器对 OP 试图做什么的猜测。这个编译器的猜测很可能完全不符合要求。我的猜测是 OP 只是忘记在成员函数调用中指定参数,并且编译器严重误解了这种情况。 IE。它根本与任何成员函数指针无关。 @AndreyT 我也猜到了同样的结果,但随后编译器的猜测随之而来。无论如何编辑了我的答案以包括那个案例。

以上是关于Visual C++ 中的错误 C3867的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studios 2008 中 C++ 开发中的链接错误

Visual Studio C++ 社区 2017 中的构建错误

Visual C++ 中的 Hello World 程序给出错误

Microsoft Visual C++ 中的 SFINAE constexpr 错误

Visual Studio 2015 Update 1 中的 C++ 内部编译器错误

Visual Studio C++ 2010 Express中的程序错误