【发布时间】:2015-08-03 18:11:29
【问题描述】:
我正在尝试对从模板结构派生的结构初始化。代码是这样的:
template <class Derived>
struct Event{
//the level of access on the ctor has nothing to do with the problem
//protected:
// Event() = default;
};
struct MoveEvent: Event<MoveEvent>{
int x, y;
};
int main(){
//how do I make this work?
//MoveEvent event = {.x =5, .y = 4};
}
我认为这可能与 CTRP 有关,但将 Event<MoveEvent> 更改为 Event<int> 会产生同样的问题。此外,我认为这是 POD 的问题,但 std::is_pod 为 MoveEvent 返回 true。那么这里有什么问题呢?为什么我不能使用结构初始化?
【问题讨论】:
-
C++ 不支持 C99 指定的初始值设定项。
-
但我使用的是 C++11。
-
@user975989 没关系,那是C特性,不是C++特性
-
您尝试
MoveEvent event = {.5, 4};了吗?也请把你收到的逐字错误信息放在你的问题中。 -
啊。所以问题在于继承,因为非继承
MoveEvent有效。