2013-09-29 50 views
0

我的代码如下C++不具有类类型

#include <vector> 
using namespace std; 
... 

class A { 
    NEW_TYPE a; 
    ... 
    public: 
    typedef vector<int> NEW_TYPE; 
    ... 
} 

错误说“NEW_TYPE”没有指定类型

有谁知道出了什么问题?

感谢

+0

您在定义之前使用它。 – us2012

+0

只需在类定义之前添加声明即可。它不一定需要在类范围内。 – Ares

+0

@Comrade这似乎不是很好的建议。让它在类范围之外的语义是完全不同的。首先,它不必要地污染全局命名空间,而且,在很多情况下,类模板中的typedef取决于模板参数。 – us2012

回答

3

一般来说,在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: 
    // ... 
}; 
+0

所以在我的情况下,我必须移动整个公共部分? –

+0

@ user1464870:不,只是typedef。我添加了代码。 (顺便说一下,如果你不需要公开它们,typedefs也可以是私有的。) –

+0

@ user1464870:你可以在任何一个类中拥有尽可能多的public/protected/private部分。虽然它并不总是很漂亮。 – SigTerm

相关问题