Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将typedef变量指定为静态变量_C++ - Fatal编程技术网

C++ 如何将typedef变量指定为静态变量

C++ 如何将typedef变量指定为静态变量,c++,C++,有人能告诉我下面程序中的错误吗 #include <iostream> using namespace std; class A { public: typedef int count; static count cnt ; }; count A::cnt = 0; int main() { return 0; } #包括 使用名称空间std; 甲级 { 公众: typedef int计数; 静态计数碳纳米管; };

有人能告诉我下面程序中的错误吗

#include <iostream>
using namespace std;

class A
{
        public:
        typedef int count;
        static count cnt ;

};

count A::cnt = 0;

int main()
{
    return 0;
}
#包括
使用名称空间std;
甲级
{
公众:
typedef int计数;
静态计数碳纳米管;
};
计数A::cnt=0;
int main()
{
返回0;
}
错误
count不命名类型,因为您的
typedef
在您的类中,因此无法全局使用

你需要

#include <iostream>
using namespace std;

typedef int count;


class A
{
        public:
        static count cnt ;

};

count A::cnt = 0;

int main()
{
    return 0;
}
#包括
使用名称空间std;
typedef int计数;
甲级
{
公众:
静态计数碳纳米管;
};
计数A::cnt=0;
int main()
{
返回0;
}

您必须使用
A::count A::cnt=0因为您的typedef是在类A的范围内定义的


i、 e.将typedef移到类之外,或者如上所述使用范围解析

@bash.d当然可以,你可以用与任何其他类型相同的方式来定义一个
typedef
很高兴知道这是一个标准构造,应该在所有平台上编译。我一直在用模板做这件事,尽管是含蓄的。你不需要像@Bathsheba的回答所显示的那样使它全球化。是的,你不需要,但你可以。如果我知道@Bathsheba写了什么,我也会建议的。但我没有…我投了反对票,因为你说他们需要让typedef全球化,这是不对的。最好是减少typedef的范围并保持关联。这个解决方案绝对有效!在这种特殊情况下,是的。所以没有理由否决投票。它确实有效,但并不需要(你是这么说的),它引入了一个全球符号(这是一个糟糕的做法)。这不是一个好答案。