gpt4 book ai didi

c++ - C2011 : 'struct' type redefinition and C2027: use of undefined type

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:43 24 4
gpt4 key购买 nike

在名为types.h 的文件中,我定义了

struct entry {
entry( int a, int t ) : addr(a), time(t) {}
int addr;
int time;
};

在另一个文件中,我想在 compress.h 中使用这样的结构:

#include "types.h"
#include <vector>
class Compress {
public:
void insert( int a, int t )
{
theVec.clear();
for (int i = 0; i < 10; ++i)
theVec.push_back( entry(a, t) );
}

private:
std::vector< entry > theVec;
};

在主文件中,我写了

#include "compress.h"
int main()
{
Compress *com = new Compress;
com->insert(10, 100);
return 0;
}

但是在 push_back 行,我得到了这些错误

error C2011: 'entry' : 'struct' type redefinition
see declaration of 'entry'
error C2027: use of undefined type 'entry'
see declaration of 'entry'

我该如何解决?

最佳答案

在你的 types.h 文件中你应该有这样的东西:

#ifndef TYPES_H
#define TYPES_H

struct ...

#endif

如果您多次包含它,这将防止编译器多次解析包含文件,这会导致多个定义。

名称本身并不重要,但您应该确保它是唯一的并且没有被其他一些包含文件定义。

关于c++ - C2011 : 'struct' type redefinition and C2027: use of undefined type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com