gpt4 book ai didi

c++ - 如何修复 : error: no match for 'operator=' (operand types are 'Estado' and 'Estado*' )

转载 作者:行者123 更新时间:2023-11-28 04:20:13 27 4
gpt4 key购买 nike

我正在尝试动态地创建一个对象数组,但在尝试之后有时我做不到。相关代码在下

整个代码太长,无法全部贴在这里,所以我只贴出相关部分。

这是状态.h

#ifndef State_h
#define State_h

#include "Arduino.h"


class State{
private:
char *idText;
public:
Estado(String _idText);
Estado();
void setID();
int id;
};
#endif

这是State.cpp

#include "Arduino.h"
#include "Estado.h"

using namespace std;

Estado::Estado(String _idText){
_idText.toCharArray(idText, _idText.length()+1);
setID();
}

Estado::Estado(){}

void Estado::setID(){
char* _id = strtok(idText,":");
id = atoi(_id);
}

这是main.ino

Satate *states;

void setup(){
int sizeParameters;
sizeParameters = //I get the user's size from keyboard and convert to int
char parametersChar;
parametersChar = //I get the user's string from keyboard and convert to char
estados = new Estado[sizeParameters];

char* token = strtok(parametrosChar, "-");
int i = 0;
while(token != NULL){
estados[i] = new Estado(token);// Here I get the error
i++;
token = strtok(NULL,"-");
}

Serial.println(estados[0].id);
}

我在等待一个对象数组

最佳答案

你定义一个 Estado 的数组:

 estados = new Estado[sizeParameters];

每个条目都有一个 Estado 类型。

然后你去分配 Estado* 类型的东西,由 new 返回:

 estados[i] = new Estado(token);

那是行不通的。要么你需要这个:

 estados = new Estado*[sizeParameters];

那些是指针,或者你需要这个:

 std::vector<Estado> estados;

然后逐步添加:

 estados.push_back(Estado(token));

push_back 方法更好,因为您无需提前计划所需的数组大小,您可以在找到要添加的新内容时添加。在实践中,这比要求用户预先说明他们添加了多少东西要容易得多。当他们完成添加时,您可以弄清楚这一点。

关于c++ - 如何修复 : error: no match for 'operator=' (operand types are 'Estado' and 'Estado*' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622219/

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