我希望单个向量说vector<userdefined> vec
来存储一些值。假设我已经创建了A类的两个对象B和C.
现在我希望对象B在我的矢量“vec”和对象C中保持整数在我的矢量“vec”中保持双重
举例说明这个问题
B.vec.pushback(int);
C.vec.pushback(double);
我可以创建模板或使用任何重载功能来执行此操作吗?
答案 0 :(得分:1)
忘记&#34;为什么&#34;如果您想这样做,可以使用工会将int
或double
存储在同一个向量中。
#include <vector>
union userdefined
{
int i;
double d;
userdefined(int p) : i(p) {}
userdefined(double p) : d(p) {}
};
struct C
{
std::vector<userdefined> vec;
};
int main()
{
int i = 0;
double d = 0.0;
C A;
C B;
A.vec.emplace_back(i);
B.vec.emplace_back(d);
}
我不建议这样做。您应该尝试找到一种不需要在同一数据结构中存储两种类型的解决方案。访问非活动的工会成员太容易了。