Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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++ 在结构内部使用比较器函数的需要是什么?_C++_Dictionary_Struct_Comparator - Fatal编程技术网

C++ 在结构内部使用比较器函数的需要是什么?

C++ 在结构内部使用比较器函数的需要是什么?,c++,dictionary,struct,comparator,C++,Dictionary,Struct,Comparator,由于您的setter递归调用您的setter递归调用您的setter递归调用您的setter 您需要为此设置一个支持字段,如下所示: public class Student { private int _sid; public int Sid { set { if (value <= 0) Console.WriteLine("Id must be positive.");

由于您的setter递归调用您的setter递归调用您的setter递归调用您的setter

您需要为此设置一个支持字段,如下所示:

public class Student {
    private int _sid;
    public int Sid
    {
        set 
        {
            if (value <= 0) Console.WriteLine("Id must be positive.");
            else _sid = value;
        }
        get { return _sid; }
    }
公共班级学生{
私人互联网服务;;
公共int Sid
{
设置
{

如果(value您的属性正在递归地调用它们自己。请使用您的
Sid
属性

public int Sid
{
    set 
    {
        if (Sid <= 0) Console.WriteLine("Id must be positive."); // here, also validation wrong--use value
        else Sid = value; // here
    }
    get { return Sid; } //here
}

您也应该考虑在验证失败时在SET中采取行动。简单地输出到控制台是出乎意料的。用户没有任何指示(通过代码)出错。请考虑抛出异常。

private int _sid;     
public int Sid
{
    set 
    {
        if (value <= 0)
           throw new InvalidOperationException("Id must be positive.");
        _sid = value;
    }
    get => _sid;
}
private int\u sid;
公共int Sid
{
设置
{
if(值_sid;
}

因为您正在以递归方式重新设置属性。如果要使用这种形式的属性,则需要一个备份字段
private int _sid;     
public int Sid
{
    set 
    {
        if (value <= 0)
           throw new InvalidOperationException("Id must be positive.");
        _sid = value;
    }
    get => _sid;
}