我正在尝试在类中定义模板成员函数,每次尝试构建此代码时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中运行它,每当我尝试构建此代码时,我都会遇到以下崩溃:
答案 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 您可以报告编译器错误,但他们无法修复旧版本。