我无法使用参数包获取 2 个相同类型的不同对象以指向不同对象的指针。这是Controller.h:
using expand_type = int[];
template<typename... Ts> class Controller {
public:
Controller(int i, string s, Ts... args): id(i), name(s) {
expand_type{ (add_component(&args), 0)... };
}
void add_component(Test2* a) {
device_.push_back(a);
}
void print() {
cout<<name<<":"<<endl;
cout<<"================="<<endl;
for (vector<Test2*>::size_type i = 0; i < device_.size(); ++i) {
cout<<device_[i]->print()<<endl;
}
cout<<"================="<<endl;
}
private:
vector<Test2*> device_;
int id;
string name;
};
这是我的Test2.h:
class Test2 {
public:
Test2(): x(0) {}
Test2(int a): x(a) {}
int print() const {
return x;
}
private:
int x;
};
我的问题是当我制作两个单独的 Controller 对象时,它们在各自的向量中共享它们的 Test2 对象。这是我的主要内容:
int main() {
Test2 b(69);
Test2 c(666);
Test2 d(943754);
Controller<Test2, Test2, Test2, Test2> x(2, string("Peter"), 70, b, c, d);
Controller<> y(2, string("Pietje"));
Controller<Test2, Test2, Test2, Test2> z(3, string("Jan"), 909, 808, 1, 2);
x.print();
y.print();
z.print();
cout<<"hello"<<endl;
return 0;
}
那么输出是:
Peter:
=================
0
808
1
2
=================
Pietje:
=================
=================
Jan:
=================
0
808
1
2
=================
hello
我希望 Controller 的不同对象具有指向不同 Test2 对象的不同指针,而我 v3 不知道如何。
此外,作为一个附带问题;我的第一个指针总是变为 0,除非它是向量中唯一的对象。
任何帮助表示赞赏!