Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建C++赋值操作符=0 在C++中,指针类型VUL*/INT/CHAR *可以用0的值初始化,而不需要类型转换,但对于任何其他值都不适用。是否可以将相同的行为灌输到已定义的类中?一个=0的构造函数,还是一个==0的比较器?为了澄清,我尝试添加语法,这样我的n维向量类就可以被分配给一个vec dir=0的零向量_C++_Constructor_Comparator - Fatal编程技术网

如何创建C++赋值操作符=0 在C++中,指针类型VUL*/INT/CHAR *可以用0的值初始化,而不需要类型转换,但对于任何其他值都不适用。是否可以将相同的行为灌输到已定义的类中?一个=0的构造函数,还是一个==0的比较器?为了澄清,我尝试添加语法,这样我的n维向量类就可以被分配给一个vec dir=0的零向量

如何创建C++赋值操作符=0 在C++中,指针类型VUL*/INT/CHAR *可以用0的值初始化,而不需要类型转换,但对于任何其他值都不适用。是否可以将相同的行为灌输到已定义的类中?一个=0的构造函数,还是一个==0的比较器?为了澄清,我尝试添加语法,这样我的n维向量类就可以被分配给一个vec dir=0的零向量,c++,constructor,comparator,C++,Constructor,Comparator,编辑:使用void*作为构造函数参数的类型实际上是可行的,但这是实现这一点的最佳方法吗?不能使构造函数只接受文本值0。有两件事很接近 #include <cstddef> class Foo { Foo(); // Construct from nothing at all Foo(std::nullptr_t) // Construct from the null pointer value }; 因为0也是一个空指针值,所以可以使用std::nullptr\t

编辑:使用void*作为构造函数参数的类型实际上是可行的,但这是实现这一点的最佳方法吗?

不能使构造函数只接受文本值0。有两件事很接近

#include <cstddef>

class Foo
{
    Foo(); // Construct from nothing at all
    Foo(std::nullptr_t) // Construct from the null pointer value
};
因为0也是一个空指针值,所以可以使用std::nullptr\t重载

Foo foo_zero = 0; // calls Foo(std::nullptr_t)

不能使构造函数只接受文本值0。有两件事很接近

#include <cstddef>

class Foo
{
    Foo(); // Construct from nothing at all
    Foo(std::nullptr_t) // Construct from the null pointer value
};
因为0也是一个空指针值,所以可以使用std::nullptr\t重载

Foo foo_zero = 0; // calls Foo(std::nullptr_t)

有一个从文本0到nullptr的隐式转换,nullptr的类型是nullptr\t

因此,以下工作方式符合您的要求:

// Needed for nullptr_t
#include <cstddef> 

struct A
{
    A(std::nullptr_t) {}
};

int main()
{
    A a = 0;
}
当然,这也意味着A=nullptr是有效的,但也许你可以接受


您可以通过一些现代的constexpr和template技巧,通过nullptr\t间接实现这一点。

有一个从文本0到nullptr的隐式转换,nullptr的类型是nullptr\t

因此,以下工作方式符合您的要求:

// Needed for nullptr_t
#include <cstddef> 

struct A
{
    A(std::nullptr_t) {}
};

int main()
{
    A a = 0;
}
当然,这也意味着A=nullptr是有效的,但也许你可以接受


您可以使用一些现代的constexpr和template把戏通过nullptr\t间接实现这一点。

请解释这是如何复制的?在阅读推荐的帖子时,我和之前一样感到困惑,它没有建立一种方法来实现我的目标。这个网站上的问题这么快就被关闭了,这是怎么回事???这看起来很像一个问题。为什么要这样做?@molbdnilo您不能从文字0添加隐式转换?也许你想说可以而不是不能请注意我没有关闭你的问题。我把它标记为dupe,因为我认为你问题的三分之二在dupe中得到了回答。然而,如果你不同意,我很高兴重新开始it@molbdnilo我希望能够分配我的n维向量类,如vec3 dir=0请解释这是如何重复的?在阅读推荐的帖子时,我和之前一样感到困惑,它没有建立一种方法来实现我的目标。这个网站上的问题这么快就被关闭了,这是怎么回事???这看起来很像一个问题。为什么要这样做?@molbdnilo您不能从文字0添加隐式转换?也许你想说可以而不是不能请注意我没有关闭你的问题。我把它标记为dupe,因为我认为你问题的三分之二在dupe中得到了回答。然而,如果你不同意,我很高兴重新开始it@molbdnilo我希望能够分配我的n维向量类,如vec3 dir=0@L.F.我尝试了这个方法,但似乎无法工作-我的类要么也接受nullptr\t,要么拒绝0,因为它不确定要使用哪个构造函数。如果你能得到一段简短的示例代码,那将非常有用appreciated@bruno该评论实际上是对L.F.提出的后续建议的回应,该建议似乎不起作用。原来的答案确实有效,而且是我最初选择的答案,我只是交换了它,因为我认为另一个答案更清楚地说明了什么有效以及为什么有效:@L.F.我试过这个,而且似乎无法工作-我的类要么也接受nullptr\t,要么拒绝0,因为它不确定要使用哪个构造函数。如果你能得到一段简短的示例代码,那将非常有用appreciated@bruno该评论实际上是对L.F.提出的后续建议的回应,该建议似乎不起作用。原来的答案确实有效,而且是我最初选择的答案,我只是交换了它,因为我认为另一个答案更清楚地说明了什么起作用以及为什么起作用:额外的分数提醒我注意constexpr和模板骗局。在你提到它之后,我对它进行了简短的研究,但现在我会选择null_ptr选项,因为intellisense似乎是一个大粉丝。提醒我constexpr和-正如你所说-模板恶作剧的额外积分。在您提到它之后,我对它进行了简要的研究,但现在我将选择null_ptr选项,因为intellisense似乎是一个大粉丝。