Microsoft c ++优化编译器已停止工作

时间:2014-11-24 20:15:32

标签: c++ visual-studio templates

我正在尝试在类中定义模板成员函数,每次尝试构建此代码时MSVC都会崩溃。我不确定这是否是Visual Studio 2008中的错误。这是一个最小的例子。

testTemp.h头文件:

#pragma once
#include <vector>
#include <iostream>
class testTemp
{
public:
    testTemp(void);
    ~testTemp(void);
    template<typename T>
    std::vector<T> m_vMonitorVec;
    int MonitorSignal(T x, std::vector<T> vec, int len);
};

这里是testTemp.cpp

  #include "StdAfx.h"
    #include "testTemp.h"

    testTemp::testTemp(void)
    {
    }

    testTemp::~testTemp(void)
    {
    }
    template<typename T>
    int testTemp::MonitorSignal(T inp, std::vector<T> monVec, int len)
    {

        return 0;
    }

和stdafx.h是:

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>

我在MSVC 2008中运行它,每当我尝试构建此代码时,我都会遇到以下崩溃: enter image description here

1 个答案:

答案 0 :(得分:5)

模板变量是c ++ 14中的新变量。 VS2008肯定没有实现它们。

template <typename T> std::vector<T> m_vMonitorVec;

应该是

template <typename T>
class testTemp {
  public:
    testTemp(void) { }
    ~testTemp(void) { }
    int MonitorSignal(T x, std::vector<T> const& vec, int len) {
        return 0; 
    }
  private:
    std::vector<T> m_vMonitorVec;
};

我建议内联实施,因为: Why can templates only be implemented in the header file?


PS 您可以报告编译器错误,但他们无法修复旧版本。