c++ - 快速新运营商问题

标签 c++

我知道这真的很容易,我正在查看一些东西,但这就是我所拥有的......:

typedef struct
{
    char s1[81];
    char s2[81];
    char s3[81];
}Rec;

int main()
{   

   Rec *a[10];

   a[0] = (Rec*)new unsigned char(sizeof(Rec));
   a[0]->s1= "hello";
   printf("a[0] = %s\n",a[0]->s1);
   delete(a[0]);


   getchar();
   return 0;
}

现在,行

a[0]->s1= "hello";

提示表达式必须是可修改的左值。我很确定这就是我在我的新运算符(operator)行中转换它的方式并且它需要是一个长值或其他东西但我不确定执行此操作的代码......我知道很容易但是是的。任何帮助将不胜感激

最佳答案

你不能像那样分配给 char 数组。使用 strcpy,或将您的字符数组更改为 std::string

strcpy(a[0]->s1, "hello");

你为什么要这样做:

a[0] = (Rec*)new unsigned char(sizeof(Rec));

而不是这个:

a[0] = new Rec;

关于c++ - 快速新运营商问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8186416/

相关文章:

c++ - 通过引用返回对象

c++ - 在类中定义数组的方法和字段

c++ - 将指向成员函数的指针作为模板参数传递。为什么这行得通?

c# - 将 C++ 字符数组转换为 C# 字符串

c++ - boost::interprocess 共享互斥锁和 boost 共享互斥锁的进程间条件变量

c++ - 在函数调用之前使用 (void)

c++ - ISO/IEC 10646 中的 "character short name"是什么?

c++ - 通过指针访问结构数组

c++ - 类对象到字符串的隐式转换运算符

c++ - 无法转换参数