模板 - 类对象 - 类对象的结构
Template - class object - struct of Class objects
(*我必须使用我的数组结构,它必须是动态的)
我希望Array
结构填充Expe
类对象。我正在使用模板,但不知何故我的结构标头无法识别我创建的模板。
结构标头:
template <class T>;
struct Arr{
int days;
T * M;
};
typedef Arr* Array;
结构 cpp:
void constr(Array &o){
//Construct of 31*1 Matrix
o=new Arr;
o->days = 31;
o->M = new T[o->days];
我认为应该没问题,但是我得到错误:
..ListStruc.cpp:26:13: error: expected type-specifier before 'T'
你在 template<class T>
和 struct Arr
之间有一个分号,它不属于那里。所以把它改成
template <class T> struct Arr{ int days; T * M; };
此外,Arr
是一个模板,因此你不能键入 def Arr*
Array
,只能Arr<someConcreteType>*
。
最后一个模板函数必须在标头中实现,如前所述,typedef不起作用,因此constr
放入标头中并将其更改为:
template<class T> void constr(Arr<T>*& o){
o=new Arr<T>;
o->days = 31;
o->M = new T[o->days];
可能还有其他问题,但这是我从问题中看到的。
当然,除了编译之外,您的代码还存在问题(违反三法则和缺乏异常安全性)。
您必须删除结构声明中的分号。此外,创建此类型的对象时,必须指定模板类名。而且不能将指针放入引用中。事实上,你不能在引用中放任何东西,它们是常量。使用指针而不是引用作为 constr 函数参数。
相关文章:
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 具有引用成员的结构是否具有唯一的对象表示形式
- 为什么我们再次从结构对象创建结构变量?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- C++:对象将 lambda 存储到结构中,稍后调用该函数
- 如何在C++中表示JSON文档的递归对象结构?
- 哪些值存储在对齐的结构/类对象的填充字节中
- 结构对象的指针成员在传递给函数时被修改
- C++ 提升 - 包含类层次结构对象的类的序列化
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- 如何通过不同的指针使用类的对象访问结构?(链表)(C++)
- 是否可以在C++ (C) 中使用全局范围对象(结构)?
- 将数组/对象/结构列表从C#库中传递给C MFC应用程序
- 如何使用方法返回指向对象结构的指针?
- 对象/结构等的C++内存布局是什么?
- 这些不同的对象结构之间有什么区别
- 如何找到C++可执行文件的所有对象(类对象/结构)
- C/C++ 中的对象/结构对齐
- 额外的继承对对象结构或实例化有影响吗?
- 尝试处理嵌套对象/结构和动态数组时出现内存泄漏或内存错误。可能的 Xcode/malloc 问题