C++ C++;作为模板类成员的指针
我对模板类和模板函数非常陌生。所以这次我尝试创建我自己的可空类,它允许任何对象都有值或空值C++ C++;作为模板类成员的指针,c++,templates,C++,Templates,我对模板类和模板函数非常陌生。所以这次我尝试创建我自己的可空类,它允许任何对象都有值或空值 template<typename _Type> class Nullable { private: _Type *_Pointer public: Nullable::Nullable(const _Type &x) { this->_Pointer = new _Type(x); }; 模板 类可为空 { 私人: _类型*\
template<typename _Type>
class Nullable
{
private:
_Type *_Pointer
public:
Nullable::Nullable(const _Type &x)
{
this->_Pointer = new _Type(x);
};
模板
类可为空
{
私人:
_类型*\u指针
公众:
Nullable::Nullable(const\u Type&x)
{
此->\u指针=新的\u类型(x);
};
但是,当我编译它时,它会返回两个错误:
- C2059:语法错误:“此”
- C2238:在“;”之前的意外标记
提前感谢。问题1 行中缺少一个
;
:
_Type *_Pointer;
^^ missing
问题2
如果构造函数是内联定义的,则不能使用范围运算符
改变
Nullable::Nullable(const _Type &x) { ... }
到
吹毛求疵
您不需要构造函数定义末尾的;
Nullable(const _Type &x)
{
this->_Pointer = new _Type(x);
};
^^ Remove it.
将它放在那里不是错误,但它不是必需的。问题1 行中缺少一个
;
:
_Type *_Pointer;
^^ missing
问题2
如果构造函数是内联定义的,则不能使用范围运算符
改变
Nullable::Nullable(const _Type &x) { ... }
到
吹毛求疵
构造函数定义末尾不需要;
Nullable(const _Type &x)
{
this->_Pointer = new _Type(x);
};
^^ Remove it.
将它放在那里不是一个错误,但它不是必需的。当您以语法方式内联函数时,您所在的类的名称空间是隐式添加的,因此您试图定义Nullable::Nullable::Nullable。另一个要考虑的问题是,谁负责在构造函数中分配的内存,因为您的类不是空的't清理它。我建议不要使用原始指针,而是使用std::unique_ptr,这样当可为null的对象被销毁时,内存会自动清理。在语法内联函数中,会隐式添加您所在类的命名空间,因此您试图定义可为null::Nullable::Nullable.another要考虑的是谁负责在构造函数中分配的内存,因为您的类没有清理它。我建议您不要使用原始指针,而是使用std::unique_ptr,这样当您的可空对象被销毁时,内存会自动清理。哇,谢谢,它现在工作得很好。对不起错过“;”:D哦,谢谢,它现在工作得很好。错过“;”:D很抱歉