【发布时间】:2023-01-23 15:07:56
【问题描述】:
我尝试使用指向模板类的指针来初始化 std 向量
使用 c++11 和 g++
像这样,它失败了:
template <typename T>
struct Column
{
Column( T data)
{
this->data = data;
}
T data;
};
int main(int argv,char** argc)
{
std::vector<std::vector<Column*>> csv;
}
这我需要我可以像这样初始化不同类型的列:
Column<std::string>* tmpString = new Column<std::string>(each);
csv[0].push_back(tmpString);
or
Column<int>* tmpInt = new Column<int>(each);
csv[0].push_back(tmpString);
有什么办法吗?或者更好的方法?
【问题讨论】:
-
不可能。
Column<std::string>和Column<int>是不同的类型。你可以像这样实现变体. -
听起来您正在寻找类似 @987654327@ 或
std::vector<std::variant<std::string, int>>的东西,无论如何std::any和std::variant是您应该研究的类 -
@j 它被标记为 C++11。
-
@273K 这是我尝试获取模板向量的方法,因为我不知道类型
标签: c++ c++11 c++-templates