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>