我应该使用模板来检查字符串和向量的空性吗

Should I use template for checking emptiness for string and vector?

本文关键字:向量 字符串 检查 我应该      更新时间:2023-10-16

我必须检查类的成员是否为空。该类正在从json文件中读取一些值,如果一些成员为空,则意味着json格式不正确。到目前为止,我只能检查字符串的空性,我已经使用了一个函数:

void ConfigFile::checkEmptyness(const std::string& strIn, const std::string& memberNameIn, const std::string& pathIn)
{
    if (strIn.empty())
    {
        throw ConfigFileException(emptyStringOrGetFailedMsg(pathIn, memberNameIn));
    }
}

现在,我必须修改应用程序,以便从json中读取浮点向量。我发现了如何从json:中读取矢量

for (auto& item : tmpPT.get_child(path))
{
    float label = item.second.get_value< float >();
    checkNegativity< float >(label, "classifierSearchedClass", path);
    m_classifierSearchedClass.push_back(label);
}

但我正在考虑验证它是否也是空的。我可以创建一个重载函数checkEmptyness,它有一个向量参数。所以,我的问题是:

我应该创建一个模板,还是仅仅创建一个重载函数?

如果创建一个模板,可以这样做:

template< typename T>
void ConfigFile::checkEmptyness(const T& arrIn, const std::string& memberNameIn, const std::string& pathIn)
{
    if (arrIn.empty())
    {
        throw ConfigFileException(emptyStringOrGetFailedMsg(pathIn, memberNameIn));
    }
}

是一个好方法,还是使用重载更好?

这是一个很好的方法,因为它遵循DRY。