【问题标题】:error C2600: what does this means?错误 C2600:这是什么意思?
【发布时间】:2014-03-26 16:39:40
【问题描述】:

我开始用 C++ 编程,但遇到一个我无法解决或理解的错误

error C2600: 'kingMobile::KingChatFilter::KingChatFilter' : 无法定义编译器生成的特殊成员函数(必须先在类中声明)

这里是代码:

#include "buraco/game/board/model/KingChatFilter.h"
#include "buraco\game/board/model\GamePlayController.h"
#include "boost/lexical_cast.hpp"
#include "s3e.h"
#include "buraco\Player.h"
namespace kingMobile {

    KingChatFilter::KingChatFilter() {
        //this->gamePlayController = gamePlayController;

    }

    string KingChatFilter::filter(string msg){

        if(msg == "anus"){
            return "amigao";
        }
        return msg;
    }
}

这里有我的 .h 文件

#include "buraco\game/board/model\CardGroup.h"
#include "boost/function.hpp"
#include "oxygine-framework.h"

namespace kingMobile {

    class KingChatFilter : public boost::enable_shared_from_this<KingChatFilter> {
        public:

            string filter(string msg);

        private:

    };

    typedef boost::shared_ptr<KingChatFilter> spKingChatFilter;
}

【问题讨论】:

  • 你没有声明构造函数。
  • (在KingChatFilter.h的类定义中)
  • 有我的 KingChatFilter.h ...我没有声明吗?
  • 我很好奇msg == "anus" 部分...
  • 不,您没有在您提供的 KingChatFilter.h 中声明构造函数。

标签: c++ class mobile constructor compiler-errors


【解决方案1】:

错误信息表示这个构造函数(特殊成员函数)

KingChatFilter() 

首先必须在类定义中声明。例如

class KingChatFilter
{
public:
   KingChatFilter();
//...
};

只有在那之后,你才能在类定义之外定义它。

您不能重新定义由编译器构造函数隐式声明的,包括默认构造函数。

其实我重复了编译器的错误信息::)

/你/不能定义编译器生成的特殊成员函数(必须 首先在类中声明)

【讨论】:

    【解决方案2】:

    即使你已经在代码中定义了构造函数的实现,你仍然需要在类的定义中声明函数。 在这种情况下,您需要添加 KingChatFilter();在你班级的公共部分(在.h中)

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2011-03-01
      相关资源
      最近更新 更多