为什么这个函数重载不起作用?

时间:2010-04-27 12:09:24

标签: c++ overloading

class CConfFile
{
    public:
        CConfFile(const std::string &FileName);
        ~CConfFile();
        ...
        std::string GetString(const std::string &Section, const std::string &Key);
        void GetString(const std::string &Section, const std::string &Key, char *Buffer, unsigned int BufferSize);
        ...
}

string CConfFile::GetString(const string &Section, const string &Key)
{
    return GetKeyValue(Section, Key);
}

void GetString(const string &Section, const string &Key, char *Buffer, unsigned int BufferSize)
{
    string Str = GetString(Section, Key);     // *** ERROR ***
    strncpy(Buffer, Str.c_str(), Str.size());
}

为什么我在第二个函数中遇到错误too few arguments to function ‘void GetString(const std::string&, const std::string&, char*, unsigned int)'

由于

3 个答案:

答案 0 :(得分:11)

您没有使用CConfFile::确定第二个功能的范围。它被编译为自由函数,因此对GetString的调用解析为自身(递归),这需要四个参数。

答案 1 :(得分:3)

因为顾名思义CConFile::GetString()是一个类成员函数,因为在第二个函数中调用它是不可访问的。 您声明的另一个功能GetString()全局

您忘记将CConFile::添加到第二个功能...

答案 2 :(得分:0)

我想说这是因为没有CConfFile实例来调用该函数,所以假设你正在调用另一个函数。