我正在尝试定义编译器自动生成并导致编译错误的构造函数。下面是我的代码:
class myclass
{
public:
void Test_Func()
{}
};
myclass::myclass()
{
}编译器是否为上面这样的简单类做了额外的工作。下面是我在MSVC编译器中得到的错误:
"error C2600: 'myclass::myclass' : cannot define a compiler-generated special member function (must be declared in the class first)"发布于 2011-06-12 22:54:40
合成的构造函数既被声明又被定义。你可能不会自己定义它。
为了提供实现,您必须声明自己的构造函数。
[special] (2003年措辞,12/1)说:
默认构造函数(12.1),复制构造函数和复制赋值运算符(12.8),以及析构函数(12.4)是特殊的成员函数。当程序没有显式声明这些成员函数时,该实现将为类类型隐式声明这些成员函数,除非在12.1中注明。如12.1、12.4和12.8中所述,如果使用,则实现将隐式定义它们。程序不应定义隐式声明的特殊成员函数。
发布于 2011-06-12 22:52:58
如果用户生成的默认构造函数尚未声明,则无法定义该构造函数。编译器已经定义了它,所以您已经定义了多个默认构造函数。如果您希望定义一个默认构造函数,则必须声明一个默认构造函数-就像任何其他函数一样。
发布于 2011-06-12 22:53:03
尝试这样做:
class myclass { public: myclass(); void Test_Func() {} }; myclass::myclass() { }https://stackoverflow.com/questions/6322573
复制相似问题