【发布时间】:2018-02-21 15:03:46
【问题描述】:
我在尝试使以下代码正常工作时遇到错误
template<typename var>
struct Point
{
var x;
var y;
constexpr Point() : x( 0 ), y( 0 ) {
}
constexpr Point( const var _x, const var _y ) : x( _x ), y( _y ) {
}
var GetX() const { return x; }
var GetY() const { return y; }
};
template<typename var>
struct Rect
{
var x, y;
var w, h;
constexpr Rect() : x( 0 ), y( 0 ), w( 0 ), h( 0 ) {
}
constexpr Rect( const var _x, const var _y, const var _w, const var _h ) : x(_x), y(_y), w(_w), h(_h) {
}
var Left() const { return x; }
var Right() const { return x + w; }
var Top() const { return y; }
var Bottom() const { return y + h; }
Point<var> LT() const { return Point<var>( x, y ) };
Point<var> RT() const { return Point<var>( x + w, y ) };
Point<var> LB() const { return Point<var>( x, y + h ) };
Point<var> RB() const { return Point<var>( x + w, y + h ) };
};
我的 struct Rect 中的 Point 返回似乎导致了很多难以理解的错误。有人会碰巧知道这样做的正确方法吗?
【问题讨论】:
-
哪些错误?将它们包含在问题中会有所帮助。
-
令人惊讶的是,考虑到您在这里的经验,您没有将整个错误粘贴到您的问题中,这是一种标准做法
-
@chris 我没有包含该错误,因为它似乎没有为问题增加任何价值。 MSVC 吐出的确切错误是包含上述文件的任何文件都存在语法错误,但没有显示与上述文件相关的错误。我觉得添加错误只会使问题变得混乱并增加混乱,人们要求我然后包含 MSVC 正在谈论的其他文件,而我可以清楚地看到其他文件没有任何问题。但是,如果人们希望我不管添加错误,请告诉我。
-
@PasserBy 请参考我上面对克里斯的评论。
-
FWIW,将代码粘贴到 gcc.godbolt.org 会在 GCC 和 Clang 中出现非常直接的错误。当它这么容易时,通常值得尝试不同的编译器。