获取错误代码C2228:“._Ptr”左侧必须具有类/结构/联合

时间:2013-08-09 23:07:52

标签: c++ c

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

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()));
            }

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

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

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

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

正在某些时候扩展到:

is_directory( d->status())._Ptr

无法使用,因为.运算符无法应用于bool值。