debugging Constexpr /编译时常量表达式错误

abithluo  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(212)

我在编译时在我的项目中得到以下错误。尝试了所有方法,但无法解决此问题。

此处重现错误:*https://replit.com/join/egfoiwpgig-darshanpandhi

错误

错误:constexpr变量“noOfTiles”必须由常量表达式初始化

相关编码

Board.h

# pragma once

class Board {
private:

public:
    static constexpr int getTotalNoOfTiles();
};

Board.cpp

# include "Board.h"

constexpr int Board::getTotalNoOfTiles() {
    return 21;  // calculation simplified for the sake of example
}

Player.h

# pragma once

# include "Board.h"

class Player {
private:
    static constexpr int noOfTiles = Board::getTotalNoOfTiles();   // this needs to be constexpr because I will be using noOfTiles as an array size in this same file
};

提问

难道Board::getTotalNoOfTiles()不是一个常量表达式,因为它只是返回21。这不是一个编译时常量吗?

此处重现错误:https://replit.com/join/egfoiwpgig-darshanpandhi

vwhgwdsa

vwhgwdsa1#

constexpr本身是不够的。编译器需要能够在编译时获得值,因此getTotalNoOfTiles的定义需要在.h文件中。当然是内联的。

相关问题