将类强制转换为模板类 我有一个小项目,我正在C++上做。 这个项目需要我编写一个模板类,比如说类a。 我对A的要求很少,其中包括: 实现中不允许动态分配 A保存类型为T的参数(不是指针,因此没有“new”) A可以为空(即未初始化)

将类强制转换为模板类 我有一个小项目,我正在C++上做。 这个项目需要我编写一个模板类,比如说类a。 我对A的要求很少,其中包括: 实现中不允许动态分配 A保存类型为T的参数(不是指针,因此没有“new”) A可以为空(即未初始化),c++,templates,casting,operators,C++,Templates,Casting,Operators,可以通过以下方式初始化: A<int> a; A<int> a(5); A<int> a = 5; A<int> a = Empty; 静态实例化一个名为Empty的对象(因此任何使用类A的对象也将知道Empty): 就这样。显然,它不起作用 整个(相关)模板声明: class A{ private: T _Value; bool _empty; public: A(); A(const T value);

可以通过以下方式初始化:

A<int> a;
A<int> a(5);
A<int> a = 5;
A<int> a = Empty;
静态实例化一个名为Empty的对象(因此任何使用类A的对象也将知道Empty):

就这样。显然,它不起作用

整个(相关)模板声明:

class A{
private:
    T _Value;
    bool _empty;
public:
    A();
    A(const T value);
    A(const EmptyClass none);
    A(const A& opt);
    A(const EmptyClass & none);
    //Checks if the object is empty
    const bool isEmpty() const;
    //Destructor
    ~Optional();
    A<T>& operator=(const EmptyClass& rhs);
    A<T>& operator=(const A<T>& rhs);
};
A类{
私人:
T_值;
布尔空;
公众:
A();
A(常数T值);
A(常量空类无);
A(常数A和选择);
A(常数为空,无);
//检查对象是否为空
常量bool isEmpty()常量;
//析构函数
~Optional();
A和运算符=(常量清空类和rhs);
A和运算符=(常数A和rhs);
};
目前我在这行中遇到一个错误:

A<int> optionalInt = Empty
A optionant=Empty
错误是:

错误:从“EmptyClass(*)()到“int”[-fpPermissive]的转换无效

我只允许使用c++98标准。 我想知道解决这个问题的方向


谢谢

问题1:

有两个构造函数可以将
EmptyClass
作为输入

A(const EmptyClass none);
A(const EmptyClass & none);
两人都是该行的优秀候选人

A<int> a = Empty;
这需要:

~A();

您需要显示整个模板类声明。您可能希望了解(将在C++17标准as中介绍)。如果你不想使用它,那么至少你可以将它用作创建自己的可选类的参考。至于你要问的问题,请编辑问题以包含一个,或者至少向我们显示
空的声明。
。嗨,谢谢。编辑了我的原创文章,我希望现在已经足够好了。嗨,谢谢。这几乎就是问题所在。我还向“none”类添加了一个casting操作符。可选的是我忘记在这里将实现更改为简化的“模型”。
A<int> a = Empty;
~Optional();
~A();