2013-07-15 3 views
1

Прошло некоторое время с тех пор, как я сделал C++, так что медведь со мной. Я имею следующую структуру:Путаница о структурах

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

Но когда я пытаюсь сделать:

tPage pagenumber = 0; 

Я получаю следующее сообщение об ошибке: «Не подходит конструктор не существует для преобразования из INT в sPage». Что я делаю не так?

+0

Используйте скобки инициализатор 'tPage PageNumber = {0};' – greatwolf

+0

Даже проще, 'tPage PageNumber {};' – chris

+4

Вы не можете сказать, что 'tPage' целое, а содержит целое число , И вот как вы должны использовать его, как совокупность, а не скаляр. –

ответ

1

Вы должны фигурные скобки для инициализации:

tPage pagenumber = {0}; 

или создать свой собственный конструктор:

struct sPage 
{ 
    U16 _; 

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

Могут возникнуть неожиданные эффекты с неявными конструкторами, хотя, возможно, их стоит отметить. –

3

Вы забыли брекеты во время инициализации. Делайте это как

tPage pagenumber = { 0 };