我在编译时在我的项目中得到以下错误。尝试了所有方法,但无法解决此问题。
此处重现错误:*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。这不是一个编译时常量吗?
1条答案
按热度按时间vwhgwdsa1#
constexpr
本身是不够的。编译器需要能够在编译时获得值,因此getTotalNoOfTiles
的定义需要在.h文件中。当然是内联的。