我需要构建一个可以具有多种类型的类的向量,如下所示:
#include <variant>
#include <vector>
#include "Field.h"
using namespace std;
int main()
{
variant <int, float> v;
vector <variant<Field<int>, Field<string>, Field<float>>> fdList;
fdList[0].getName();
}
这是头文件Field.h
:
#pragma once
#include <string>
#include <vector>
using namespace std;
template<class T>
class Field
{
public:
Field();
Field(string);
void setName(string);
string getName();
bool isPrime();
void toPrime();
void toForeign(Field);
~Field();
private:
string FD_Name;
vector <T> records;
bool isPrimeK = false;
string message;
};
template<class T>
string Field<T>::getName()
{
return FD_Name;
}
当我尝试访问getName()
函数时,Visual Studio 不断给我以下消息错误:
E0135 类 "std::variant<Field, Fieldstd::string, Field>" 没有成员 "getName"
C2039 'getName': 不是 'std::variant<Field,Fieldstd::string,Field>' 的成员
但它工作得很好,如果我这样定义我的向量:
vector <Field<int>> fdList;
fdList[0].getName();
我怎样才能解决这个问题?