C++ “我为什么要看?”;与其类同名的成员函数必须是构造函数";?

C++ “我为什么要看?”;与其类同名的成员函数必须是构造函数";?,c++,constructor,compiler-errors,C++,Constructor,Compiler Errors,我有一个有用的函数,我想把它从一个独立的实用程序转换成一个RAII风格的助手类。在我粘贴函数代码并重命名它之前,我对类的定义进展顺利。此时,函数名用红色下划线,工具提示上说“与其类同名的成员函数必须是构造函数” 此错误消息没有帮助。我知道我不能编写与类同名的函数。我希望这个函数是一个构造函数。为什么不是呢?发生什么事了 之前: void Useful( int Param ) // works, and is useful { // do useful things } 之后: cla

我有一个有用的函数,我想把它从一个独立的实用程序转换成一个RAII风格的助手类。在我粘贴函数代码并重命名它之前,我对类的定义进展顺利。此时,函数名用红色下划线,工具提示上说“与其类同名的成员函数必须是构造函数”

此错误消息没有帮助。我知道我不能编写与类同名的函数。我希望这个函数是一个构造函数。为什么不是呢?发生什么事了

之前:

void Useful( int Param ) // works, and is useful
{
    // do useful things
}
之后:

class Useful
{
    void Useful( int Param ) // generates error
    {
        // do useful things
    }
};

问题是剪切粘贴错误。返回类型的存在阻止函数被解释为构造函数

因此:


关于那个错误消息,有什么不清楚的地方?构造函数没有返回类型(这在每本初学者书中都有介绍)。我不认为这是一个如此常见的错误,它应该在这里有自己的问答对。不。相反,我会唠叨你。此错误消息没有帮助。但它告诉了你到底是怎么回事。您希望它是一个构造函数,但对编译器来说,它显然不是一个构造函数。将函数与构造函数的签名进行比较,然后砰!返回类型真的很突出。我写了这个Q/A对,因为搜索错误消息通常会让我找到一个有用的条目,在这种情况下,我在任何地方都找不到好的答案。我希望它能帮助别人。
class Useful
{
    Useful( int Param ) // problem solved
    {
        // do useful things
    }
};