【问题标题】:Compiler error at use of assignment operator to copy an array in two classes使用赋值运算符复制两个类中的数组时出现编译器错误
【发布时间】:2019-08-22 10:20:46
【问题描述】:

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

【问题讨论】:

  • 应该是:*pTest = myData;

标签: c++ operator-overloading variable-assignment operator-keyword


【解决方案1】:

pTest 是一个指针。

*pTest = myData;

应该可以。

请记住,指针和它所指向的内容是两个不同的东西。两者都可以在 C++ 代码中进行操作,所以新手经常把它们搞混。

【讨论】:

  • @SergioSolorzano 是的,我们都去过那里。
  • 仍然有人认为对我的问题投反对票是合适的,但没有链接该问题,因为这有效 pTest->operator=(myData); ...doh
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
相关资源
最近更新 更多