【问题标题】:c++ weird struct and bitset errorc++ 奇怪的结构和位集错误
【发布时间】:2011-09-10 18:16:08
【问题描述】:

我的私有类声明中有这个

#include "stdafx.h"
using namespace std;
    template <typename Key, typename T>
    class A{
    //....
    private:
        static const unsigned int HSIZE = 32;
        struct Bucket {
            Key key;
            T value;
            bitset<HSIZE> jumpMap;
        };
    //....
    };

给出以下错误:

Error   1   error C4430: missing type specifier - int assumed
Error   2   error C2059: syntax error : '<'
Error   3   error C2238: unexpected token(s) preceding ';'

当我删除 bitset 行时,它没有给我任何错误。我做错了什么?

编辑:添加更多相关行

【问题讨论】:

  • 这是真正的代码吗?因为我看不到KeyTHMAX 是什么——它们被定义了吗?
  • 让我添加完整的类声明
  • 不需要添加完整的类定义,特别是如果它很长。就是我要的东西:)另外,您是否包含了 bitset 标头并包含了命名空间 std?
  • 现在你会这么温柔地添加触发此类错误的模板实例化吗?

标签: c++ visual-c++ struct bitset


【解决方案1】:

您是否包含了 bitset 标头?我想你错过了吗?

【讨论】:

  • 耶稣有什么?我将它包含在 stdfax.h 中,但它不起作用。但是,如果我将它包含在标题本身中,它就可以工作。有人能解释这是为什么吗?
  • 你为什么认为,stdfax 将包含所有标题 :)
  • 我认为 stdfax 的想法是在其中包含所有标题,然后只需包含 stdfax 即可在一次调用中将所有标题包含在内
  • 是的,我明白了,这就是我发布上面链接的原因 :) 没问题,我很高兴,我帮助了 :)
【解决方案2】:

HMAX 应该改为 HSIZE 吗?否则,请确保包含 ,并且名称在范围内。您的代码中可能有一个 using 命名空间 std,因为您没有使用 std:: 限定它。但我赌的是 HMAX HSIZE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 2023-03-05
    相关资源
    最近更新 更多