我有一个很奇怪的问题。

我有3个文件:
Figure.h:

#ifndef FIGURE_H
#define FIGURE_H
namespace figure
{
    class figure
    {
        public:
            figure(position &p,color c);
            virtual bool canMove(const position &p)=0;
            virtual bool move(const position &p)=0;
        protected:
            color col;
            position &p;
    };
    class king : public figure
    {
    };
};
#endif // FIGURE_H


king.h:

#ifndef KING_H
#define KING_H

#include "./figure.h"
namespace figure
{
   class king : protected figure
   {
   };
}
#endif // KING_H


和king.cpp:

#include "king.h"
bool figure::king::canMove(const position &p)
{
}


我用它编译:
gcc -std = c11 -pedantic -Wall -Wextra

但是问题是我得到了这个错误:


  /src/figure/figure.h:24:45:错误:否'bool
  图中:: king :: canMove(const position&)的成员函数
  类别“ figure :: king”


我该怎么办?
非常感谢你!

最佳答案

如错误消息所述,您尚未声明方法canMove()。只需在king类中声明它

namespace figure
{
   class king : public figure
   {
   public:
       bool canMove(const position &p);
   };
}

关于c++ - 命名空间中的抽象方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15938285/

10-11 23:06