2016-11-14 54 views
0

我有下面的代碼有問題:錯誤t C4430 t缺少類型說明符 - int假定。注意:C++不支持默認int t發電機

Generator.h:

#pragma once 
class Generator 
{ 
public: 
    friend class BagObject; 
    Generator(void); 
    ~Generator(void); 
    ... 
    void generator(int); 
private: 
    BagObject *object; 
    vector<BagObject> data; //Error c4430 
}; 

,這是一個錯誤:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

有還有6個錯誤,但我相信他們應該在解決這個問題後消失。

這是cpp文件。我無法第一次粘貼它。 Generator.cpp

#include "stdafx.h" 
#include "Generator.h" 
#include "BagObject.h" 
#include <iostream> 
#include <vector> 
#include <ctime> 

using namespace std; 


Generator::Generator(void) 
{ 
    srand(time(NULL)); 
} 


Generator::~Generator(void) 
{ 
    data.clear(); 
} 

void Generator::generator(int ld) 
{ 
    for (int i = 0; i<ld; i++) 
{ 
    object = new BagObject(rand(),rand(),i); 
    data.push_back(object); 
    } 
} 


int main() 
{ 
    Generator *g = new Generator; 
    g->generator(10); 
    return 0; 
} 
+0

我只是猜測但沒有你忘記'的std :: VECTOR'或包括BagObject頭? –

回答

2

要麼你忘了,包括頭

#include <vector> 

或忘了寫指令

using namespace std; 

在它會更好,無論如何寫

#include <vector> 

//... 

std::vector<BagObject> data; 
^^^^^ 

您必須在標有std::vector的所有標頭中包含標頭<vector>

+2

看看'#pragma Once'聲明,你不想推薦'使用namespace std',因爲這很可能是一個頭文件 –

+0

@AdrianLis你在哪看到我推薦使用它? –

+0

也許不建議單詞的最佳選擇,但你確實建議他可能忘了寫'using namespace std',在這種情況下這樣做並不是一個好的選擇,因爲標題。 –

0

vector不能用不完整的類型實例化。爲了在標題中有vector<BagObject> data;,標題還必須有#include "BagObject.h"

(這是除了在弗拉德的答覆建議的更改)

相關問題