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

Getting error code C2228: left of '._Ptr' must have class/struct/union

本文关键字:联合 结构 C2228 错误代码 获取 Ptr      更新时间:2023-10-16

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

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

非常感谢您的帮助!

is_directory()返回bool,而不是Path,这是file_size()用作参数的内容。

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

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

正在扩展到:

is_directory( d->status())._Ptr

由于.运算符不能应用于bool值。