2014-03-23 3 views
-1

В моем Array.h файле объявлен конструктор:ошибка, связанная с явным классом

explicit Array(unsigned); 

, и я уверен, реализации, что в Array.cpp:

explicit Array::Array(unsigned size): size(size) {} 

И я получил ошибка компиляции:

Only declarations of constructors can be 'explicit'

Где ошибка?

+0

Обратите внимание, что он говорит заявление, а не определение. Тогда вы знаете, где искать и что не так. – dutt

ответ

0

Вам не нужно явно указывать в файле cpp, должно быть достаточно Array::Array(unsigned size): size(size) {}.

0

Ответ на сообщение об ошибке. Вы не должны повторять ключевое слово explicit в определении.

0

Согласно C++ Standard

6 The explicit specifier shall be used only in the declaration of a constructor or conversion function within its class definition; see 12.3.1 and 12.3.2.

Таким образом, вы можете использовать функцию спецификатор explicit только при объявлении конструктора или преобразования функции в определении класса.

Что касается сообщений об ошибке, то она неоднозначна, поскольку определения функций также их заявление. :)

Смежные вопросы