C++ - 将模板类的指针传递给函数
我正在尝试将指向模板对象的指针传递给另一个类。
template <int size>
class A {
public:
int a[size] = {0};
int getA(int n) {
return a[n];
}
};
class B {
public:
A<>* b;
void setB(A<>* n) {
b = n;
}
};
int main()
{
const int size1 = 10;
A<size1> data1;
B b1;
b1.setB(&data1);
}
这是行不通的。
作为解决方案,我可以创建 B 类作为模板类,并将 B
对象创建为 B> b1;
但是,如果我乘以 A
,这将创建多个对象,这是我不想要的,因为此代码适用于资源有限的嵌入式项目。
我想要的只是将 data1
对象的指针传递给另一个类函数并将其存储在其中。我正在寻找的代码适用于 C++03
,我无法使用 C++11
功能,例如共享指针。
有办法做到这一点吗?
感谢任何帮助,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你已经让自己陷入了某种“第 22 条军规”的境地。
如果不使
B
模板化,您就无法在B
中保留模板化A
,例如:给
A
一个非模板化基类供B
保存,例如:否则,你将不得不制作
B
只需持有一个void*
指针,然后要求调用者提取void*
并决定将其转换为什么,例如:You have gotten yourself into a bit of a catch-22 situation.
You can't hold a templated
A
inside ofB
without makingB
templated as well, eg:Or by giving
A
a non-templated base class forB
to hold, eg:Otherwise, you will have to make
B
just hold avoid*
pointer, and then require the caller to extract thatvoid*
and decide what to cast it to, eg:我认为您需要从构造函数传递大小。模板不适合此用例。
I think you will want to pass the size from a constructor. Templates don't fit for this use case.