使用赋值运算符将数组复制为两个 类 时出现编译器错误
Compiler error at use of assignment operator to copy an array in two classes
我正在重载赋值运算符函数以将一个 char 数组复制到不同对象中的另一个 char 数组。我可以调用重载的赋值运算符函数,但不能使用赋值。
你能给我一些指导,我做错了什么吗?我可以使用赋值运算符使用两个 类 吗?
谢谢你,塞尔吉奥
pTest = myData;//Fails
pTest->operator=(myData);//this works
struct Data {
char sourceName[5] = { 'S','o','l' };
};
class Test {
public:
//virtual void operator=(Data data) = 0;
void operator=(Data data);
void Show();
private:
char nameTest1[10];
};
void Test::operator=(Data data) {
strcpy_s(nameTest1, data.sourceName);
}
void Test::Show() {
cout << nameTest1;
}
int main() {
Test *pTest = new Test();
Data myData;
pTest = myData;//Fails
pTest->operator=(myData);//but this works
}
预期结果:数据对象中的数组 sourceName 已分配给对象 Test 中的数组名称 Test1。
pTest
是一个指针。
*pTest = myData;
应该可以。
请记住,指针和它指向的对象是两个不同的东西。两者都可以在 C++ 代码中操作,因此新手经常将它们混淆。
我正在重载赋值运算符函数以将一个 char 数组复制到不同对象中的另一个 char 数组。我可以调用重载的赋值运算符函数,但不能使用赋值。
你能给我一些指导,我做错了什么吗?我可以使用赋值运算符使用两个 类 吗?
谢谢你,塞尔吉奥
pTest = myData;//Fails
pTest->operator=(myData);//this works
struct Data {
char sourceName[5] = { 'S','o','l' };
};
class Test {
public:
//virtual void operator=(Data data) = 0;
void operator=(Data data);
void Show();
private:
char nameTest1[10];
};
void Test::operator=(Data data) {
strcpy_s(nameTest1, data.sourceName);
}
void Test::Show() {
cout << nameTest1;
}
int main() {
Test *pTest = new Test();
Data myData;
pTest = myData;//Fails
pTest->operator=(myData);//but this works
}
预期结果:数据对象中的数组 sourceName 已分配给对象 Test 中的数组名称 Test1。
pTest
是一个指针。
*pTest = myData;
应该可以。
请记住,指针和它指向的对象是两个不同的东西。两者都可以在 C++ 代码中操作,因此新手经常将它们混淆。