我正在使用泛型实现一个智能指针类,我想强制这个类的用户使用语法正确构造智能指针,例如
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 常量'
当我添加一个#define explicit
这些错误消失。这是我的一个黑客,只是为了让编译器忽略关键字。我猜这意味着 yon olde 编译器不支持显式。有人可以确认这一点吗?是否有人知道解决方法?
谢谢Beaucoups,丹尼斯。