我刚接触C++,为了练习,我决定编写一个简单的控制台游戏。我最初都是在main.cpp文件中编写的,但现在我决定将所有的类拆分,以便更容易阅读。我查阅了一些关于如何正确执行此操作的教程,但我似乎遇到了一个无法找到解决方法的错误。
这里是一个“块”的基类。不同纹理的块继承自此基块。
这是头文件的代码:
#pragma once
#include <iostream>
class BaseBlock { //Base block class
private:
int PosX, PosY;
protected:
std::string Appearance;
bool IsActive;
public:
BaseBlock(int x, int y);
virtual inline int getX();
virtual inline int getY();
virtual inline bool getIsActive();
virtual inline std::string getAppearance();
virtual inline void setActive(bool isactive);
};
下面是它的.cpp文件:
#include "clsBaseBlock.h"
BaseBlock::BaseBlock(int x, int y) {
PosX = x;
PosY = y;
Appearance = ' ';
IsActive = false;
}
inline int BaseBlock::getX() { return PosX; }
inline int BaseBlock::getY() { return PosY; }
inline bool BaseBlock::getIsActive() { return IsActive; }
inline std::string BaseBlock::getAppearance() { return Appearance; }
inline void BaseBlock::setActive(bool isactive) { IsActive = isactive; }
下面是其中一个派生类的头的代码:
#pragma once
#include "clsBaseBlock.h"
class BlockWeak : public BaseBlock { // Third derived block class
public:
BlockWeak(int x, int y) : BaseBlock(x, y) {} //Here is the inheritance
};
下面是它的.cpp文件:
#include "clsBlockWeak.h"
BlockWeak::BlockWeak(int x, int y): BaseBlock(x,y){
Appearance = "\xB1";
IsActive = true;
}
从这段代码中,我会在派生类的头文件中发现各种错误,比如:
-语法错误:“symbol”:成员函数定义应以“}”结尾-基/成员初始值设定项列表中尾随“char”非法
然后在.cpp文件中得到:
-键入“int”意外-找到意外的文件结尾
任何关于如何纠正我的代码的信息将非常感谢。
BlockWeak(int x, int y) : BaseBlock(x, y) {} //Here is the inheritance
不,不是。这里是继承:
class BlockWeak : public BaseBlock
下面是构造函数的完整定义,您也在.cpp文件中提供了该定义,因此可能违反了一个定义规则
BlockWeak(int x, int y) : BaseBlock(x, y) {}
您可能应该删除从:
开始的部分,包括{}
并将其移动到定义中