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

时间:2014-09-18 14:30:15

标签: c++

我必须检查一个类的成员是否为空。该类正在从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);
}

但我正在考虑验证它是否也是空的。我可以创建一个具有vector参数的重载函数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));
    }
}

是一个很好的方法,或者使用重载更好?

1 个答案:

答案 0 :(得分:1)

这是一个很好的方法,因为它服从DRY