gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:26 24 4
gpt4 key购买 nike

这是我的头文件。我试图编译它,但我在 void init(TipMatrice tip) “初始化参数 1 of 'void graf_matrice::init(graf_matrice::TipMatrice)'” 时遇到错误,这将我重定向到 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);

说明:枚举器(此处为MatriceAdiacenta)在一个无作用域的enum(此处为TipMatrice) 在包含 enum 的范围内定义(这里是类 graf_matrice)。这就是为什么您必须使用 ::

指示范围的原因

或者,如果您确实需要从 int 进行转换,您仍然可以显式地进行:

g.init(static_cast<graf_matrice::TipMatrice>(1));

关于c++ - 来自 int C++ 类的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33724368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com