使用赋值运算符复制两个类中的数组时的编译器错误

问题描述 投票:-1回答:1

我正在重载赋值运算符函数以将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中的数组nameTest1。

c++ operator-overloading variable-assignment operator-keyword
1个回答
4
投票

pTest是一个指针。

*pTest = myData;

应该管用。

请记住,指针及其指向的内容是两个不同的东西。两者都可以在C ++代码中进行操作,因此新手经常会混淆它们。

© www.soinside.com 2019 - 2024. All rights reserved.