找不到错误的解决方案 "invalid conversion from char to const char*"

Cant find resolution for the error "invalid conversion from char to const char*"

我环顾四周,但找不到问题的答案。该程序假设在标题周围放置星形边框 (*),但我收到错误消息:

invalid conversion from 'char' to 'const char*' [-fpermissive]

以及错误

initializing argument 1 of 'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]' [-fpermissive]|
#include <iostream>
#include <string>

using namespace std;

int main()
{
cout << "Please enter your name: " << endl;
string name;
cin >> name;

//Build the message that we intend to write
const string greeting = "Hello " + name + "!";

//Build the second and fourth line of the output
const string spaces = (greeting.size(), ' ');
const string second = "* " + spaces + " *";

//Build the first and fifth lines of the output
const string first = "* " + spaces + " *";

//Write all the output
cout << endl;
cout << first << endl;
cout << second << endl;
cout << "* " << greeting << " *" << endl;
cout << second << endl;
cout << first << endl;

return 0;
}

这是打印标题周围边框的代码^^(与第一个错误有关)。

// TBD: DPG annotate
template<typename _CharT, typename _Traits, typename _Alloc>
*Error ->* basic_string<_CharT, _Traits, _Alloc>::
basic_string(const _CharT* __s, const _Alloc& __a)
: _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
               __s + npos, __a), __a)
{ }

这是与第二个错误^^相关的代码(在字符串函数中)。

我把两段代码都放了,因为我不知道哪个是由哪个引起的。

这个:

const string spaces = (greeting.size(), ' ');

应该是

const string spaces(greeting.size(), ' ');

对于 =,它会尝试用表达式 (greeting.size(), ' ') 的结果初始化 spaces。该表达式使用 逗号运算符 ,它计算并丢弃 greeting.size(),并给出 ' ' 作为其结果;所以它相当于

const string spaces = ' ';

尝试用单个字符初始化 string,但没有合适的构造函数来执行此操作。

删除 =,它使用两个构造函数参数进行初始化,给出一个包含请求的空格数的字符串。