在C++中克隆函数

Clone function in C++

本文关键字:函数 C++      更新时间:2023-10-16

我正在尝试实现一个虚拟函数,该函数位于.cpp文件中的.h文件中。这是一个任务,所以我不能让函数变成非虚拟的。这是一个克隆函数,它调用类的复制构造函数。功能:

virtual Item* clone() const;

属于类

Ingredient : public Item {

当我在Ingredient.cpp文件中实现它时,我有:

Ingredient::clone () const {
    return new Ingredient ( *this );
} 

但当我尝试编译时,我会遇到以下两个错误:

Ingredient.cpp:23:13:error:C++需要所有声明的类型说明符

Ingredient::clone () const {
        ^

Ingredient.cpp:24:9:错误:无法使用类型为"Ingredient*"的右值初始化类型为"int"的返回对象

    return new Ingredient ( *this );
           ^~~~~~~~~~~~~~~~~~~~~~~~

生成2个错误。

我不明白我在这里做错了什么,因为我应该使用被取消引用的*this self-pointer。有什么建议吗?

您忘记了函数实现中的返回类型。

Item* Ingredient::clone () const {
// ^^ Missing