C++ “无操作员”&燃气轮机&燃气轮机&引用;匹配这些操作数。嵌套结构&;动态分配

C++ “无操作员”&燃气轮机&燃气轮机&引用;匹配这些操作数。嵌套结构&;动态分配,c++,C++,我创建了两个结构,一个用来保存一个人的信息,另一个用来保存他穿了多少层衣服以及它们是什么 const int sizeOfLayerName = 20; struct Layers { char* layerName[sizeOfLayerName]; }; struct Person { Layers* layer; }; } 我可以定义这个人穿了多少层,但是由于标题中的错误,我无法输入它是什么类型的层(例如:毛衣) int

我创建了两个结构,一个用来保存一个人的信息,另一个用来保存他穿了多少层衣服以及它们是什么

const int sizeOfLayerName = 20;
    struct Layers {
        char* layerName[sizeOfLayerName];
    };

    struct Person {
        Layers* layer;
    };
}
我可以定义这个人穿了多少层,但是由于标题中的错误,我无法输入它是什么类型的层(例如:毛衣)

int main() {
    int layers;
    cout << "How many layers is the person wearing: ";
    cin >> layers;

    Layers* layer = nullptr;
    layer = new Layers[layers];

    for (int i = 0; i < layers; i++) {
        cout << "What is the person wearing for layer " << i + 1 << ": ";
        cin >> layer[i].layerName; // Error occurs here
        cout << "Layer" << i + 1 << ": " << layer[i].layerName;
    }
}
intmain(){
int层;
cout>层次;
层*layer=nullptr;
层=新层[层];
对于(int i=0;i为什么指向char的指针数组?也许你想要的是
char layerName[sizeOfLayerName]
他们所说的内容。而且,如果输入太长,这将崩溃。使用
std::string
表示
layerName
。你还有一个悬而未决的
}
如果您停止使用
new
和裸指针,改用
std::vector
std::string
来处理内存泄漏和其他问题,这些问题都可以完全避免。错误将显示编译器在代码中遇到问题的位置。错误还将显示操作数类型。这是polite将免费包含编译器已经提供给您的所有内容,而不是强迫读者去尝试并找出答案。
#include <iostream>
#include <string>
#include <istream>