C++;字符串数组错误:无法将参数1从';std::string[200]';至';std::string&'; 我在C++编程方面很新,我只是在练习。这是我在stackoverflow上的第一个主题(从现在起,我在google搜索中使用过这个…)
我试图让函数返回字符串的完整向量。 当然,我不能使用默认的返回,所以我用一个指针作为参数创建了一个void函数,它会将向量复制到参数中 我想做的是:C++;字符串数组错误:无法将参数1从';std::string[200]';至';std::string&'; 我在C++编程方面很新,我只是在练习。这是我在stackoverflow上的第一个主题(从现在起,我在google搜索中使用过这个…),c++,arrays,string,pointers,C++,Arrays,String,Pointers,我试图让函数返回字符串的完整向量。 当然,我不能使用默认的返回,所以我用一个指针作为参数创建了一个void函数,它会将向量复制到参数中 我想做的是: class CadastroPessoas { private: string dadosPessoais[MAX_PESSOAS]; public: void lerDadosTodasPessoas(string &vetor); /* outras coisas... */ }; vo
class CadastroPessoas
{
private:
string dadosPessoais[MAX_PESSOAS];
public:
void lerDadosTodasPessoas(string &vetor);
/*
outras coisas...
*/
};
void CadastroPessoas::lerDadosTodasPessoas(string &vetor)
{
vetor = this->dadosPessoais;
}
但是当我做一些类似的事情时:
CadastroPessoas * EmpresaPessoas = new CadastroPessoas()
string dadosPessoais[MAX_PESSOAS];
EmpresaPessoas->lerDadosTodasPessoas(dadosPessoais);
我得到这个错误信息:
无法将参数1从'std::string*[200]'转换为'std::string&'
当然,我不能使用默认返回
为什么不呢
无论如何,出现错误的原因与错误消息中描述的完全相同:您编写了一个需要字符串引用的函数,并且您正试图向它传递一个指向200个字符串的指针(当传递给函数时,数组降级为指针)。它们是完全不同的东西
你可以:
A) 在函数中取一个指针(string*vector
)
B) 将数组设为向量并传入对它的引用(std::vector&vector
)
C) 只需返回一个向量,并完成它。不要假设将创建一个副本。复制省略和/或移动语义将在这里帮助您
string dadosPessoais[MAX_PESSOAS];
这是长度为MAX_PESSOAS的字符串数组。而这
void CadastroPessoas::lerDadosTodasPessoas(string &vetor)
{
vetor = this->dadosPessoais;
}
函数通过引用获取单个字符串对象。更改函数以接受数组;但是,在这种方法中,必须逐个复制每个对象。此外,通常不鼓励使用阵列,因为它们是臭名昭著的臭虫温床
更好的方法是使用std::array
(如果您知道大小是固定的)或std::vector
(如果您认为大小在运行时可能会有所不同。string&vector
是对one字符串的引用,我认为您需要使用vector&vector
,string-dadosPessoais[MAX\PESSOAS]
是字符串的c数组数组,您可以使用向量构造函数从中创建字符串向量:向量tmp(dadopssoais,dadopssoais+MAX_PESSOAS)
。但是最好在vetor中正确地推送所有字符串:vetor.push(“foo”);vetor.push(“bar”)
啊..介意将变量名翻译成英文吗?