2013-07-15 296 views
1

自从我完成C++后,我已经有一段时间了。我有以下结构:关于结构的困惑

struct sPage { U16 _; }; 
typedef sPage tPage; 

但是当我尝试这样做:

tPage pagenumber = 0; 

我得到以下错误:“没有合适的构造存在于从int转换为S页面”。我究竟做错了什么?

+0

使用大括号初始化'TPAGE页面编号= {0};' – greatwolf

+0

更容易,'t第页面编号{};' – chris

+4

你不能说'tPage'是一个整数,而它包含一个整数。这就是你如何使用它,作为一个聚合而不是标量。 –

回答

1

你需要花括号初始化:

tPage pagenumber = {0}; 

,或使自己的构造函数:

struct sPage 
{ 
    U16 _; 

    sPage(U16 val) : _(val) { } 
}; 
+0

这样的隐式构造函数可能会有意想不到的效果,但它们可能值得注意。 –

3

你忘了括号,同时初始化。做到像

tPage pagenumber = { 0 };