0

当我尝试执行这行代码时,我收到了这个奇怪的错误代码。

cType += file_size(is_directory( d->status()));

这是导致错误的部分代码。

void scan(string switches, path const& f, unsigned k = 0)
{
    // Declare file types
    long long cppType = 0, cType = 0,
        hType = 0, hppType = 0,
        hxxType = 0, javaType = 0,
        totalClassType = 0, aviType = 0,
        mkvType = 0, mpegType = 0,
        mp4Type = 0, mp3Type = 0;

    int cpp = 0, c = 0, h = 0, hpp = 0, hxx = 0, java = 0,
        totalClass = 0, avi = 0, mkv = 0, mpeg = 0, mp4 = 0, mp3 = 0;

    int totalBytes = 0;
    string indent(k, '\t');
    directory_iterator temp;
    directory_iterator d(f);        //f = the first file in folder to be processed
    directory_iterator e;           // signals end of folder

    bool isReverse = false;
    bool isRecursive = false;

    path pth;
    pth = d->path();

    for (unsigned check = 0; check < switches.size(); ++check)
    {
        if (switches[check] == 'r')
        {
            isRecursive = true;
        }

        else if (switches[check] == 'R')
        {
            isReverse = true;
        }
    }

    for (unsigned int i = 0; i < switches.size(); ++i)
    {
        if (switches[i] == 'c')
            //OPTION c: Locate c++ files - extension(s): .c,. cpp, .h, .hpp, .hxx
        {
            if (pth.extension() == ".c")
            {
                c++;
                cType += file_size(is_directory(d->status()));
            }

很感谢任何形式的帮助!

4

1 回答 1

3

is_directory() 返回 a bool,而不是 a Path,这是 file_size() 作为参数的。

您得到的错误可能意味着 file_size() 是一个宏,这意味着:

file_size(is_directory( d->status()))

在某些时候正在扩展为:

is_directory( d->status())._Ptr

这是行不通的,因为.运算符不能应用于bool值。

于 2013-08-09T23:14:01.260 回答