C++ 错误:字符串常量或错误之前应包含标识符:“perf”不是类型

C++ 错误:字符串常量或错误之前应包含标识符:“perf”不是类型,c++,gcc,C++,Gcc,我得到下面的错误,我尝试了这两种方法,但没有解决它 下面是代码 class Stat_S{ public: Stat_S(const char *name) : { ........ } ~Stat_S(); }; struct temp { Stat_S sp("ppin"); } 错误:字符串常量前应有标识符 class Stat_S{ pu

我得到下面的错误,我尝试了这两种方法,但没有解决它

下面是代码

   class Stat_S{
    public:
        Stat_S(const char *name) :
        {
            ........
        }

        ~Stat_S();
    };


    struct temp {
         Stat_S sp("ppin");
    }
错误:字符串常量前应有标识符

class Stat_S{
public:
    Stat_S(const char *name) :
    {
        ........
    }

    ~Stat_S();
};

const char *temp="ppin";
struct temp {
     Stat_S sp(temp);
}
错误:“temp”不是类型

 class Stat_S{
    public:
        Stat_S(const char *name) :
        {
            ........
        }

        ~Stat_S();
    };

    struct temp {
         Stat_S*sp = new Stat_S("ppin");
    }
工作很好没有错误

main()
{
 static temp2 *temp;
 temp2 = new temp[2];
}

如何解决第一个或第二个案例?我想从struct temp调用Stat_S的构造函数。我不习惯使用第三种情况,因为我已经有了使用点的大定义。对于sp,我不想在使用instance后将其更改为->。

非静态成员的类内初始化可以使用大括号或等效的初始值设定项执行。第三种情况是使用equal。要正确执行第一或第二步,请使用如下大括号:

struct temp {
         Stat_S sp{"ppin"};
    }

非静态成员的类内初始化可以使用大括号或相等的初始值设定项来执行。第三种情况是使用equal。要正确执行第一或第二步,请使用如下大括号:

struct temp {
         Stat_S sp{"ppin"};
    }

你想干什么?在struct temp中,您不应该编写可执行代码,而应该编写成员。代码进入函数,而不是结构。如果希望有一个立即初始化的成员,则需要使用=或{}语法。您的语法仅适用于局部变量,即函数中的为什么为负值。你能解释一下吗?这样下次我会更谨慎一些。我没有投反对票,但我想这是因为你没有解释你想做什么。请删除它。我已经站在了反对票的边界线上,可以发布任何新问题:然后编辑问题并解释你想做什么,希望有人会投票;正如我已经说过的:不是我投了反对票。此外,否决票不会对你的声誉造成太大损害,只是-2.你想做什么?在struct temp中,您不应该编写可执行代码,而应该编写成员。代码进入函数,而不是结构。如果希望有一个立即初始化的成员,则需要使用=或{}语法。您的语法仅适用于局部变量,即函数中的为什么为负值。你能解释一下吗?这样下次我会更谨慎一些。我没有投反对票,但我想这是因为你没有解释你想做什么。请删除它。我已经站在了反对票的边界线上,可以发布任何新问题:然后编辑问题并解释你想做什么,希望有人会投票;正如我已经说过的:不是我投了反对票。此外,否决票不会对你的声誉造成太大损害,只有-2票。