错误c4430缺少类型说明符-假定为int.注意:c++不支持default-int生成器
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int Generator
我有一个问题与以下代码:
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个错误,但我相信在解决上述问题后它们应该会消失。)
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;
}
忘记添加header
#include <vector>
或者忘记写指令
using namespace std;
无论如何,最好写
#include <vector>
//...
std::vector<BagObject> data;
^^^^^
您必须在所有有std::vector
引用的标题中包含标题<vector>
。
其他答案是正确的,但很神秘。说白了,你的头文件不知道BagObject
类。您在.cpp
中包含了BagObject.h
,但您应该在.h
中包含它。
由于同样的原因,它也不知道vector
。
我猜,你的印象是.cpp
必须使用#include
,但.h
没有。这是c++初学者的一个常见误解。头文件需要包含所有引用的类声明,因此你需要将.cpp
中的include提升到.h
。
将两个提到的include移动到header中,就可以了
vector
不能用不完整类型实例化。为了在头文件中有vector<BagObject> data;
,头文件中也必须有#include "BagObject.h"
。
(这是除了在Vlad的答案中建议的更改)
我知道你的问题已经解决了,但在我的情况下,同样的错误是由于循环包含(即我不小心将。h文件包含在其中一个。h文件中)引起的
TextureManager.h(有错误的文件)
// This is TextureManager.h
#pragma once
#include "Game.h"
#include "GameObject.h"
/*
texture manager class
*/
GameObject.h
// This is GameObject.h
#pragma once
#include "game.h"
#include "TexutureManager.h" // Accidental
/*
*/
我认为这可能值得注意,这也是得到这个错误的方法之一
相关文章:
- 瓦尔格林德:注意到但未处理的国际奥克特尔;是否有必要处理以及如何找到?
- 注意:"Entity_c::Entity_c(const Entity_c&)"被隐式删除,因为默认定义格式不正确:
- 缺少类型说明符 - 假定为 int.注意 c++ 不支持 default-int
- 错误:C4430:缺少类型说明符-假定为int.注意:C++不支持default-int
- 为大型项目编写固件时应注意的注意事项
- 注意:候选:MyClass:MyClass(const MyClass&) 错误
- 注意:'std::thread'在标题""中定义<thread>;您是否忘记了"#include<thread>"?
- 使用 Cmake 编译 LZO 时,它注意到找不到任何 VS 实例
- 错误C4430:丢失类型指定词 - 假设INT.注意:C 不支持对我的构造函数的默认设置
- 如何使用重定向的标准输入读取文件,即cin(注意:不使用ifstream)
- 忽略注意:在不使用"-Wno-packed-bitfield-compat"的情况下对打包位域进行偏移
- 结合整数和浮点数:性能注意事项
- 增量构建:Eclipse CDT没有注意到源已更改
- 文件解析代码需要注意
- 在使用多线程C++扩展时,是否需要注意Python GIL
- "protected versus private"注意事项
- CREATESTRUCT错误C4430:缺少类型说明符-假定为int.注意:C++不支持默认的int C:xdc
- 我的QGraphicsItem项目没有被鼠标注意到
- 错误 1 错误 C4430:缺少类型说明符 - 假定为 int.注意:C++不支持默认整数
- 禁用 g++"注意候选者是.." 编译器消息