Sam*_*mer 1 c++ templates visual-studio
我试图在类中定义模板成员函数,每次我尝试构建此代码时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);
};
Run Code Online (Sandbox Code Playgroud)
这是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;
}
Run Code Online (Sandbox Code Playgroud)
和stdafx.h是:
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
Run Code Online (Sandbox Code Playgroud)
我在MSVC 2008中运行它,每当我尝试构建此代码时,我都会遇到以下崩溃:

模板变量是c ++ 14中的新变量.VS2008当然不会实现它们.
template <typename T> std::vector<T> m_vMonitorVec;
Run Code Online (Sandbox Code Playgroud)
应该是的
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;
};
Run Code Online (Sandbox Code Playgroud)
我建议使用内联实现:为什么模板只能在头文件中实现?
PS您可以报告编译器错误,但他们不会修复旧版本.
| 归档时间: |
|
| 查看次数: |
1743 次 |
| 最近记录: |