C++ 防止将对象浇铸为C+以外的任何类型+;

C++ 防止将对象浇铸为C+以外的任何类型+;,c++,casting,C++,Casting,我定义了这个类: template <class T> class pure { public: pure(T const& attr) { this->attr = attr; } ~pure() {} T& operator=(T const& attr) { return attr; } operator T() { return this->

我定义了这个类:

template <class T>
class pure
{
public:
    pure(T const& attr) {
        this->attr = attr;
    }

    ~pure() {}

    T& operator=(T const& attr) {
        return attr;
    }

    operator T() {
        return this->attr;
    }

private:
    T attr;
};
模板
纯类
{
公众:
纯(T常量和属性){
这->attr=attr;
}
~pure(){}
T运算符=(T常量和属性){
返回属性;
}
算子T(){
返回此->属性;
}
私人:
T attr;
};
这是一个存储类型为
T
的值的类。当我想使用它的一个实例时,我得到的是
attr
(通过将
pure
转换为
T
),而不是
pure
)本身的实例


我的目标是创建一个不能强制转换为除
attr
类型以外的任何类型的类,即
t

如果您有一个支持C++11的编译器,您可以添加以下成员函数:

template<typename U>
operator U() = delete;

如果您不想将对象从
pure
强制转换为
t
,请不要为其提供转换运算符。不,我希望我的pure不能强制转换为two以外的任何类型。这是一个糟糕的问题吗?嘿,这是一个未回答的问题,对堆栈溢出的其他用户非常有用。所以,如果你感到受压迫,就取消你的否决票。七张否决票?他们中有谁能提供一些反馈吗?谢谢!你太棒了!我会试试的。我有C++ 11,你的方法很好,非常感谢!我会把你的帖子标记为答案!很好很简单,我喜欢这个删除关键字。
private:
    template<typename U>
    operator U();