C++ 表达式必须是可修改的左值

标签 c++ expression lvalue

为我的 C++ 类(class)编写此程序时我遇到了问题。我的程序读取输入的名称并将其存储到 name 中,然后它想检查 _name 下的参数是否正确。这是我的类及其头文件。

我的错误特别是在 ::setName 下,我想用 _name 检查或设置我输入的名称,以便在 ::display()

下正确输出

电话号码.cpp

using namespace oop244;


    void PhoneNumber::display() const{
        cout << "name: " << _name << ", Phone number: (" << _areacode << ") " << _localNumber / 10000 << "-" << _localNumber % 10000 << endl;
    }

    bool PhoneNumber::isValid() const
    {
        if (correctNum == false && correctArea == false){
            cout << _name << " does not have a valid phone number." << endl;
            return false;
        }
        else{
            return true;
        }

    }
    void PhoneNumber::setName(const char name[])
    {
        cout << name << endl;

        _name = name;
    }

电话号码.h

#define MAX_NAME_LENGTH 40
#define PHNO_MAX  999999
#define PHNO_MIN 100000
#define AREACODE_MIN 100
#define AREACODE_MAX  999
namespace oop244{

    class PhoneNumber{


    private:
        char _name[MAX_NAME_LENGTH + 1];
        int _areacode;
        int _localNumber;
        bool _validPhoneNumber;
    public:

        void setName(const char name[]);
        void setPhoneNumber(int areaCode, int number);
        void display() const;
        bool isValid() const;


    };
};

最佳答案

使用标准字符串

#include <string>

并使用

std::string _name;

在你的类声明中而不是

char _name[MAX_NAME_LENGTH + 1];

或者按照另一个答案中的建议使用 c 风格的 str 函数

关于C++ 表达式必须是可修改的左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303705/

相关文章:

c++ - 什么是 Bison,它为什么有用?

c++ - 为什么这段代码没有显示我认为应该显示的内容?

c++ - 没有模板左值不匹配(&&),但有模板匹配(T &&)?

c - 这段代码中表达式必须是可修改的左值错误的原因是什么?

c++ - OpenCV动画

c++ - 从可调用元组的结果创建元组

python - Scrapy 跟随与正则表达式匹配的链接

string - 在 R 中,如何用另一个字符串替换包含特定模式的字符串?

dynamic - 动态构建 lambda 表达式

c++ - 需要一些关于 r 值概念的帮助