简体   繁体   English

在结构中分配数组字段

[英]Assign array field within struct

recently i started working on C++ code and i was trying to communicate with an external library which has a struct defined as follows最近我开始研究 C++ 代码,我试图与一个外部库进行通信,该库的结构定义如下

struct StudentsInformation {
    int student_count[10];
    double total_marks[10];
    double section_marks_average;
    double class_marks_average;
};

I was trying to create a object for this struct as follows in a separate class我试图在单独的 class 中为此结构创建 object

int count[10] = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}; 
double marks[10] = {10.0, 20.0, 30.0, 40.0, 50.0, 10.0, 20.0, 30.0, 40.0, 50.0};

StudentsInformation stuInfo = { count, marks, 68.8, 56.7 };

Compiling this provides following error编译它会提供以下错误

Cannot initialize an array element of type 'int' with an lvalue of type 'int [10]'无法使用“int [10]”类型的左值初始化“int”类型的数组元素

not sure what i'm doing wrong.不知道我做错了什么。

This should compile fine, in either/both C and/or C++:这应该可以很好地编译,在 C 和/或 C++ 中的一个/两个中:

#include <stdio.h>

struct StudentsInformation {
    int student_count[10];
    double total_marks[10];
    double section_marks_average;
    double class_marks_average;
};

int main(int argc, char *argv[]) {
  struct StudentsInformation si = {
    {1, 2, 3, 4, 5, 1, 2, 3, 4, 5},
    {10.0, 20.0, 30.0, 40.0, 50.0, 10.0, 20.0, 30.0, 40.0, 50.0},
    68.8, 56.7
  };

  return 0;
}

The key part of the error message is "cannot convert an lvalue":错误消息的关键部分是“无法转换左值”:

https://en.cppreference.com/w/cpp/language/value_category https://en.cppreference.com/w/cpp/language/value_category

lvalue :左值

the name of a variable, a function, a template parameter object (since C++20), or a data member, regardless of type, such as std::cin or std::endl.变量的名称、function、模板参数 object(C++20 起)或数据成员的名称,无论类型如何,例如 std::cin 或 std::endl。 Even if the variable's type is rvalue reference, the expression consisting of its name is an lvalue expression;即使变量的类型是右值引用,由其名称组成的表达式也是左值表达式;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM