C++ 我怎样才能修复我的爱神?我想重载运算符+;排列

C++ 我怎样才能修复我的爱神?我想重载运算符+;排列,c++,C++,我想在考虑char的数组中重载运算符+。我想打印hello杰克,但它在我的程序中有Eror。我怎样才能修好它 class Test { private: char s1, s2; public: Test() {} Test(char a, char b) { s1 = a; s2 = b; } void Print() { cout << "String1 :" << s1 << "\tStr

我想在考虑char的数组中重载运算符+。我想打印hello杰克,但它在我的程序中有Eror。我怎样才能修好它

 class Test
{
private:
    char s1, s2;
public:
    Test() {}
    Test(char a, char b) { s1 = a;  s2 = b; }
    void Print() { cout << "String1 :" << s1 << "\tString2 :" << s2 << endl; }

    Test operator+(const Test& r)
    {
        Test temp;
        temp.s1 = s1 + r.s1;
        temp.s2 = s2 + r.s2;
        return temp;
    }


};
//////////////////////////////////////////////////////////////////////////
int main()
{
    char str1[] = "Hello";
    char str2[] = " Jack ";

    
    Test t1(str1[]);
    Test t2(str2[]);


    Test temp;
    temp = t1 + t2;
    temp.Print();

}
类测试
{
私人:
字符s1,s2;
公众:
Test(){}
测试(字符a,字符b){s1=a;s2=b;}

void Print(){cout您定义的几乎所有内容都是错误的。
您的
+运算符
重载将作为“测试”一部分的两个字符相加,但您只会将其中一个传递给单独的测试对象

如果您想使用字符串,请使用
std::string
而不是字符数组,除非您有特殊的理由这样做,但这是您遇到的最小问题

friend Test operator+(Test lhs、const Test和rhs)
是基于两个相同对象的值定义新对象返回的方法

这样,您就不需要打印函数,因为一旦您覆盖了该功能,打印函数就可以按原样放在iostream中,这实际上相当于只返回存储的字符串(字符串单数,这里每个对象只需要一个)


在当前状态下,我非常怀疑您的代码是否能够编译,因为您正在将一个参数传递给一个只接受一个或两个参数的对象。

将其更改为char没有帮助。
char
是单个字符,不是c字符串,也不是
std::string
类测试
只能包含2个字符
char s1,s2、 
它永远无法保存一个c字符串或将两个c字符串添加到一起。我建议您不能将多个
char
s存储到一个
char
。您必须了解内存管理。或者,使用
std::string
。它为您的用例做好了充分准备。对于新代码,您可以
Test t1(str1[0])
测试t2(str2[0]);
但是我不确定操作符+应该做什么。它不能添加额外的字符。
测试t1(str1[]) >告诉我们你要用这行代码做什么。我真的认为你没有阅读正确的C++学习材料,因为你将永远看不到任何一本好的C++书籍中的代码。