Я реализую класс интеллектуального указателя с использованием обобщений, и я хотел заставить пользователей этого класса правильно создавать интеллектуальный указатель с использованием синтаксиса, такого как
MyReference<TestCls>(mytest3))
или
MyReference<TestCls> mytest4(new TestCls());
поэтому я использовал явное ключевое слово в CTOR, чтобы предотвратить это:
MyReference aRef = NULL;
Однако из-за неблагоприятных обстоятельств, не зависящих от меня, я работаю над кодом, скомпилированным с использованием древнего компилятора MSVC ++ 4.1. Когда я включаю явное ключевое слово, я получаю следующие ошибки:
MyReference.h (49): ошибка C2501: «явный»: отсутствуют спецификаторы decl
MyReference.h (51): ошибка C2143: синтаксическая ошибка: отсутствует ';' до ''
MyReference.h (52): ошибка C2238: неожиданные маркеры перед ':'
MyReference.h (52): ошибка C2059: синтаксическая ошибка: 'int constant'
Когда я добавляю #define explicit
, эти ошибки исчезают.
Это был хак с моей стороны, просто чтобы компилятор игнорировал ключевое слово. Я предполагаю, что это означает, что явное не поддерживается компилятором yon olde.
Может кто-то подтвердить это, и есть ли кто-нибудь там со знанием обходного решения для этого?
Merci Beaucoups,
Деннис.