gpt4 book ai didi

c++ - 初始化一个动态 vector 列表

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:09 26 4
gpt4 key购买 nike

我正在尝试初始化我的 MedList,但它不起作用。这就是我要说的: 存储库.h

#include "../domain/farmacy.h"
#include "../utils/DynamicVector.h"
class Repository{

private:
DynamicVector<Medicine>* MedList; //I made it pointer so it can be dynamic

public:
Repository(); //constructor

存储库.cpp

#include "../domain/farmacy.h"
#include "repository.h"
#include "../utils/DynamicVector.h"
#include <stdlib.h>

Repository::Repository(){
this->MedList=new DynamicVector<Medicine>::DynamicVector(); //error
}

动态 vector .h

template <typename Element> //this is the Dynamic Vector constructor
DynamicVector<Element>::DynamicVector()
{
this->cap=10;
this->len=0;
this->elems=new Element[this->cap];
}

上面的错误是:

Multiple markers at this line
- no match for 'operator=' in '((Repository*)this)->Repository::MedList = (int*)operator
new(4u)'
- expected type-specifier
- candidate is:
- expected ';'

这是医学课

class Medicine{

private:
int ID;
std::string nume;
double concentratie;
int cantitate;

动态 vector 类:

template <typename Element>
class DynamicVector{

private:
Element* elems;
int cap;
int len;
void resize();
void CopyToThis(const DynamicVector& v);

public:
DynamicVector(); //constructor implicit
DynamicVector(const DynamicVector& ); //constructor de copiere
DynamicVector& operator=(const DynamicVector& );
~DynamicVector();
void addElement(Element elem);
Element delElementAtPosition(int pos);
Element getElementAtPosition(int pos);
int getLen();

};

我做错了什么?我尝试了很多变体,但似乎没有任何效果。你能帮帮我吗?

最佳答案

我认为您混淆了使用其他语言创建对象的 C++ 语法,例如Java 或 C#。

在 C++ 中,只需声明变量即可调用构造函数:

DynamicVector<Element> medList; // Calls DynamicVector<Element>::DynamicVector()

C#中的new运算符,是为一个变量动态分配空间,并返回一个指向分配空间的指针。要在这里使用它,您必须将 Repository::MedList 声明为指针类型,并像这样初始化它:

DynamicVector<Medicine>* MedList; // in repository.h

this->MedList = new DynamicVector<Medicine>(); // in repository.cpp

但是,正如 Andy Prowl 指出的那样,让编译器为您进行内存管理要好得多。为此,您应该完全删除 repository.cpp 中的错误行。为什么?那么,当构建存储库时,编译器还会尝试使用它们的默认构造函数来构造所有成员对象。这正是您想要的,因此没有理由尝试改变编译器的行为。

关于c++ - 初始化一个动态 vector 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15729188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com