HeH*_*acz 6 c++ header vector name-lookup visual-studio-2015
我有以下代码的问题:
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
};
Run Code Online (Sandbox Code Playgroud)
这是一个错误:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Run Code Online (Sandbox Code Playgroud)
还有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;
}
Run Code Online (Sandbox Code Playgroud)
aje*_*jeh 10
其他答案是正确的,但很神秘。用简单的英语来说,你的标题不知道BagObject类。您已包含BagObject.h在 中.cpp,但您应该将其包含在 中.h。
vector出于同样的原因,它也不知道。
我猜,您印象中必须.cpp使用#include,但.h没有。这是C++初学者常见的误解。标头需要包含所有引用的类声明,因此您需要将包含从 提升.cpp到.h.
将两个提到的包含移动到标题中,它将起作用。
要么你忘了包括标题
#include <vector>
Run Code Online (Sandbox Code Playgroud)
或忘了写指令
using namespace std;
Run Code Online (Sandbox Code Playgroud)
无论如何,写作会更好
#include <vector>
//...
std::vector<BagObject> data;
^^^^^
Run Code Online (Sandbox Code Playgroud)
您必须<vector>在有引用的所有标头中包含标头std::vector.
| 归档时间: |
|
| 查看次数: |
24729 次 |
| 最近记录: |