STL容器无法添加函数内定义的结构

时间:2010-01-10 11:52:49

标签: c++

我已经尝试使用与此类似的代码来解决问题

void aFuncion()
{
    struct entry
    {
        std::string field1;
        int         field2;
        int         field3;

        entry(const entry& ent)
        { 
            // copy constructor code 
        }

        entry()
        { 
            // default constructor code 
        }

        entry(std::string s, int a, int b)
        { 
            field1 = s;
            field2 = a;
            field3 = b;
        }

    }; //end of structure definition 

    std::vector<entry> vec;
    entry en("a string", 1, 2);

    vec.push_back(en);  // vec has garbage in index 0
}

将条目推入向量后,调试器仅显示向量第一个条目中的垃圾。

一旦我们将结构定义从函数中取出,问题就解决了 为什么问题出现如何让定义进入函数解决它?

(我们正在使用VS 32 on XP 32 bit)

1 个答案:

答案 0 :(得分:7)

当前的C ++标准不允许模板参数是本地定义的类型。这在即将发布的标准版本中得到了补救。

14.3.1 / 2:

  

本地类型,没有链接的类型,未命名的类型或从这些类型中复合的类型不得用作模板类型参数的模板参数。