2016-11-14 93 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"

(这是除了在弗拉德的答复建议的更改)

相关问题