0
structクラスのグローバルインスタンスを特別な意味を持つプログラムに追加したいと思います。作品MWEは、グローバル定数empty
が、私はプログラムの先頭でグローバルを宣言しないようにinside_grid
方法を変更することができれば、私は考えさせられた方法inside_grid
のすべての呼び出しに渡さなければならないであろうconstexprコンストラクタを持つ構造体の前方宣言
// Example program
#include <iostream>
constexpr int x_max = 3;
constexpr int y_max = 4;
typedef struct Position {
constexpr Position(int x, int y) : x(x), y(y) {};
int x;
int y;
inline bool operator!=(const Position &rhs) const {
return (x != rhs.x || y != rhs.y);
}
inline bool inside_grid(const Position &empty) const {
return (x >= 0 && x < x_max && y >= 0 && y < y_max && *this != empty);
}
} Position;
constexpr Position empty = Position(1,1);
int main()
{
Position p1 = Position(2,3);
Position p2 = Position(1,1);
std::cout << "p1.inside_grid(empty) = " << p1.inside_grid(empty) << " and p2.inside_grid(empty) = " << p2.inside_grid(empty) << std::endl;
}
ですそうのような任意のパラメータを取る:
// Example program
#include <iostream>
struct Position;
constexpr Position empty = Point(1, 1);
constexpr int x_max = 3;
constexpr int y_max = 4;
typedef struct Position {
constexpr Position(int x, int y) : x(x), y(y) {};
int x;
int y;
inline bool operator!=(const Position &rhs) const {
return (x != rhs.x || y != rhs.y);
}
inline bool inside_grid() const {
return (x >= 0 && x < x_max && y >= 0 && y < y_max && *this != empty);
}
} Position;
int main()
{
Position p1 = Position(2,3);
Position p2 = Position(1,1);
std::cout << "p1.inside_grid() = " << p1.inside_grid() << " and p2.inside_grid() = " << p2.inside_grid() << std::endl;
}
問題は、これが原因私は本当に理解できないエラーのためにコンパイルされないということです。 error: variable 'constexpr const Position empty' has initializer but incomplete type error: invalid use of incomplete type 'struct Position'
この問題は解決できますか?