我的代码如下C++不具有类类型
#include <vector>
using namespace std;
...
class A {
NEW_TYPE a;
...
public:
typedef vector<int> NEW_TYPE;
...
}
错误说“NEW_TYPE”没有指定类型
有谁知道出了什么问题?
感谢
我的代码如下C++不具有类类型
#include <vector>
using namespace std;
...
class A {
NEW_TYPE a;
...
public:
typedef vector<int> NEW_TYPE;
...
}
错误说“NEW_TYPE”没有指定类型
有谁知道出了什么问题?
感谢
一般来说,在C++中的名字仅适用于使用后,他们一直在宣称:
typedef int foo;
foo x = 1; // OK
bar y = 2; // Error
typedef int bar; // too late
这同样适用于你的班级。移动typedef:
class A
{
public:
typedef std::vector<int> NEW_TYPE;
private:
NEW_TYPE a;
// ...
public:
// ...
};
所以在我的情况下,我必须移动整个公共部分? –
@ user1464870:不,只是typedef。我添加了代码。 (顺便说一下,如果你不需要公开它们,typedefs也可以是私有的。) –
@ user1464870:你可以在任何一个类中拥有尽可能多的public/protected/private部分。虽然它并不总是很漂亮。 – SigTerm
您在定义之前使用它。 – us2012
只需在类定义之前添加声明即可。它不一定需要在类范围内。 – Ares
@Comrade这似乎不是很好的建议。让它在类范围之外的语义是完全不同的。首先,它不必要地污染全局命名空间,而且,在很多情况下,类模板中的typedef取决于模板参数。 – us2012