C++ 编译器警告-fpermissive
在我的代码中,我预定义了一些类,因为它们相互引用如下:C++ 编译器警告-fpermissive,c++,qt,compiler-errors,compiler-warnings,C++,Qt,Compiler Errors,Compiler Warnings,在我的代码中,我预定义了一些类,因为它们相互引用如下: class Light; class Room; class Light : public AbstractModel { int mId; QString mName; QString mAddress; bool mIsOn; LightType mType; QString mColor; int mRoomId; Room * mRoom; public:
class Light;
class Room;
class Light : public AbstractModel {
int mId;
QString mName;
QString mAddress;
bool mIsOn;
LightType mType;
QString mColor;
int mRoomId;
Room * mRoom;
public:
Light();
Light(const QString& name, const QString& address, int roomId, bool isOn, LightType type, const QString& color);
virtual ~Light();
const QString& Name() { return mName; }
const QString& Address() { return mAddress; }
int RoomId() { return mRoomId; }
bool IsOn() { return mIsOn; }
LightType Type() { return mType; }
const QString& Color() { return mColor; }
Room * Room();
QList<Rule *> Rules();
void setName(const QString& name);
void setAddress(const QString& address);
void setIsOn(bool isOn);
void setColor(const QString& color);
void setType(LightType type);
void setRoomId(int id);
static bool CreateIfNotExists();
static bool Drop();
static QList<Light *> GetAllLights();
static Light * GetLight(int id);
static Light * GetLightByAddress(const QString& address);
static QList<Light *> GetLightsByRoom(int roomId);
bool Insert();
bool Update();
bool Remove();
};
class Room : public AbstractModel {
int mId;
QString mName;
QList<Light *> mLights;
public:
Room();
Room(const QString& name);
virtual ~Room();
const QString& Name() { return mName; }
const QList<Light *> Lights();
void setName(const QString& name);
static bool CreateIfNotExists();
static bool Drop();
static Room * GetRoom(int id);
static QList<Room *> GetAllRooms();
bool Insert();
bool Update();
bool Remove();
};
您不能通过指定
-fppermissive
来修复任何问题,您只会忽略关键问题。另外,您发布的代码与引起警告的行相距甚远,甚至似乎不包含这些行。您能指出哪些行与编译器消息相对应吗?您在Light中有一个名为Room的方法,它与Room中的构造函数相同,因此当您调用Room()时,它应该使用哪一个?@stark谢谢,我把它改了,警告就没有了。奇怪的是windows上的编译器允许它。问题解决了。
../HomeControlApi/dbmodels.h:60:17: warning: declaration of ‘DbModels::Room* DbModels::Light::Room()’ [-fpermissive]
Room * Room();
^
../HomeControlApi/dbmodels.h:29:7: warning: changes meaning of ‘Room’ from ‘class DbModels::Room’ [-fpermissive]
class Room;