来自int C++类的转换无效
Invalid conversion from int C++ classes
这是我的头文件。我正试图编译它,但我在void init(TipMatrice提示)"初始化‘void graf_matrice::init(graf_martice::TipMatrixe)’的参数1"时遇到了一个错误,这将我重定向到main,但出现了另一个转换错误。我觉得我的枚举有问题。
#ifndef GRAF_MATRICE_H
#define GRAF_MATRICE_H
class graf_matrice
{
public:
static const int MaxN = 50; // numarul maxim de noduri
static const int Infinit = 99999; // nu exista drum intre noduri
enum TipMatrice
{
MatriceAdiacenta = 1,
MatriceCosturi = 2
};
public:
graf_matrice();
void init(TipMatrice tip); //iniţializare graf
};
#endif // GRAF_MATRICE_H
这是我的主菜。我在g.init(1)中得到一个错误"从int到graf_matrice::TipMatrice的无效转换"。
#include <iostream>
#include"graf_matrice.h"
using namespace std;
int main()
{
graf_matrice g;
g.init(1);
return 0;
}
你能帮我一下吗,因为我不知道怎么了。抱歉我的初学者语言不好。
在定义枚举时,最好正确使用其值:
g.init(graf_matrice::MatriceAdiacenta);
解释:在包含enum
(此处为类graf_matrice
)的作用域中定义了未定域的enum
(此处为TipMatrice
)中的枚举器(此处为MatriceAdiacenta
)。这就是为什么你必须用::
指示范围
或者,如果你真的需要从int
转换,你仍然可以显式地进行:
g.init(static_cast<graf_matrice::TipMatrice>(1));
相关文章:
- 错误:从"int"到枚举c++的转换无效
- 从 'int' 到 'int*' CPP 的转换无效
- C++ PTHREADS - 无效转换无效*(*)()到无效*(*)(无效*)
- 为什么我收到"从常量指针到指针的转换无效?
- 错误:从"int"到"int*"的转换无效[-允许].我在下面提供了我的代码,我
- 从类指针到 int 的转换无效
- C++ 错误:由于 swprintf 而从 'int' 到 'const wchar_t* 的转换无效
- 错误:从'void*'到'const uint8_t* {aka const unsigned char*}'的转换无效 [-允许]
- QTextStream的操作数到二进制的转换无效
- 从类型"void*"到函数指针的强制转换无效
- 错误:从 'char' 到 'const char' [-允许] strcat(加密,密钥[i])的转换无效;
- C++ - 从 "int" 到 "unsigned char" 的缩小转换无效
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 错误:AES 加密密钥:从"char*"到"无符号字符"的转换无效
- 模板类实例化中的指针转换无效
- 从"int"到"矢量*"的转换无效
- 从类型"void*"到类member_function指针的强制转换无效
- 在 sprintf 中从 'signed char*' 到 'char*' 的转换无效
- 另一个:从"常量类型*"到"类型*"的转换无效
- constexpr 链表 - 从 const X* 到 X* 的转换无效