来自int C++类的转换无效

Invalid conversion from int C++ classes

本文关键字:转换 无效 int C++ 来自      更新时间:2023-10-16

这是我的头文件。我正试图编译它,但我在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));