结构和类错误
Struct and Class error
我有一个结构
在myStructure.h 内部
struct myStructure
{
int myInteger;
double myDoublesArray[4];
char myCharArray[79];
};
在myClass.h 内部
#include "myStructure.h"
class myClass
{
private:
myStructure myStruct[4]
private:
Prog1Class();
~Prog1Class();
void setMyStructData();
};
主.cpp 内部
#include<iostream>
#include <string>
#include "myClass.h"
#include "myStructure.h"
using namespace std;
void myClass::setMyStructData()
{
for(int i = 0; i < 5 ; i++)
{
cout << "Please enter an integer: " << endl;
cin >> myStruct[i].myInteger;
for(int j = 0; j< 5; j++)
{
cout << "Please enter a double: ";
cin >> myStruct[i].myDoublesArray[j];
}
cout << endl << "Please enter a string: ";
cin.ignore(256, 'n');
cin.getline(myStruct[i].myCharArray, 79, 'n');
}
}
int main(void)
{
setStructData();
cin.get()
}
我得到的错误是"myStructure":"struct"类型重新定义,以及".myInteger"的左侧必须具有类/结构/联合"
我确信这是我在结构上犯的一些简单的错误,但我环顾四周,在我看来一切都是正确的。谢谢
这不是家庭作业。我只是想重新开始编程,了解一些不同的东西是如何工作的,我正在做其他学校的旧作业。谢谢
您的关键问题是没有包含保护:当多次包含同一个头时,编译器会多次看到同一个定义,并且不喜欢这样!您需要防范这种情况,通常使用宏,例如:
// myStructure.h
#ifndef INCLUDED_MYSTRUCTURE
#define INCLUDED_MYSTRUCTURE
// struct definition goes here
#endif
(对于所有其他标头也是如此)。
由于在myClass.h
和main.cpp
中都包含了结构标头,因此会得到多个定义。您要使用include防护:https://en.wikipedia.org/wiki/Include_guard.
此外,在main()
中,您试图在没有类实例的情况下访问私有成员函数。这里有几个问题。首先你需要一个实例。但是,您不能在main中创建实例,因为构造函数也是私有的。你的myClass.h
应该是这样的:
class myCLass
{
private:
myStructure myStruct[4]
public: // NOTE public here
Prog1Class();
~Prog1Class();
void setMyStructData();
};
然后,您可以创建一个myClass
:
myClass c;
然后你可以在c
上调用成员函数(因为我把它改成了public,否则你仍然不允许调用它):
c.setMyStructureData();
相关文章:
- 创建结构的数组时遇到分段错误
- 使用具有结构不完整类型错误的模板
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 导致Segmentation错误的结构中的矢量
- 编译器指出结构和 int 说明的错误 2059
- 当结构位于单独的头文件中时'unregistered datatype'在 QML 中出现Q_GADGET错误
- 在 C 函数中返回结构会导致分段错误
- C++ 结构错误"调用'erase'没有匹配函数
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 结构中的错误"Incomplete type is not allowed"
- 体系结构x86_64的未定义符号:链接器错误
- 在另一个结构中声明内部结构会导致错误:结构使用无效
- 如何编写一个错误结构,该结构可以包含不同的强键枚举作为错误代码
- 错误:结构的初始值设定项太多
- 带有结构和指针的程序错误(结构,C++)
- 错误:结构的正向声明
- 使用结构体作为参数:错误:结构体未定义
- 定义错误结构体中的枚举
- "Was not declared in this scope"错误结构定义。C++
- GCC中可能的错误:结构中的文字字符串类型