首页 > 解决方案 > 更改后在构造函数中初始化 const 变量

问题描述

我有一个客户端类,它接收一个名为 emailAdress 的 std::string 变量。这就是代码现在的样子,它可以工作:

private:
    const std::string email;

Client::Client(std::string emailAddress) : email{emailAddress}
{

}

现在,我想检查电子邮件是否包含 @ 之类的字符或没有奇怪字符的有效名称。我想用正则表达式做到这一点。现在,我的问题是,如何在更改参数变量后初始化const std::string email变量?它说它不想这样做,因为它是一个 const 变量,这就是为什么它现在在构造函数的初始化列表中。

标签: c++

解决方案


您可以将参数传递给函数,并让函数返回修改后的字符串。

class Client {
private:
    const std::string email;
    static std::string validateEmail(std::string email) {
        // ...
        return modifiedEmail;
    }

public:
    Client::Client(std::string emailAddress) : email{validateEmail(std::move(emailAddress))}
    {

    }
};

推荐阅读