2

为什么以下代码会使编译器崩溃?

#include <iostream>
#include <string>
#include <map>

class test{
public:
    template <typename T>
    std::map<std::string, T> stuff;
};

int main(int argc, char* argv[])
{
    test peanuts;
    return 0;
}

编译器中是否存在错误或什么?

4

1 回答 1

1

您试图拥有一个模板化变量,您只能拥有类模板或函数模板。如果它使编译器崩溃,那么是一个错误,但它不是有效的 C++。你可以做类似的事情

    class test{
    public:
        template <typename T>
        class Map {
        public:
            std::map<std::string, T> stuff;
        };
    };

反而。

于 2012-04-11T12:11:43.073 回答