我的代碼如下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