方法无法解决

时间:2012-10-21 17:17:39

标签: c++ oop methods

在我的标题文件中:

Esame();
Esame(string);
Esame(string, Voto);

这是一个c ++测试者类:

//OK
Esame esame("Algoritmi e strutture dati", 30);
esame.stampaEsame();

//OK
Esame esame2("Metodi Avanzati di Programmazione");
esame2.setVoto(26);
esame2.stampaEsame();

//ERROR 
Esame esame3();
esame3.setVoto(26); //Method could not be resolved
esame3.stampaEsame(); //Method could not be resolved

代码根本不编译。如果在上面的代码中使用相同的类创建了对象,为什么它找不到方法?

2 个答案:

答案 0 :(得分:3)

esame3()不会调用默认构造函数。在您的情况下,编译器认为您已声明方法

应该是

Esame esame3;

Esame esame3=Esame();

使用new创建对象将创建一个动态分配的对象。

在这种情况下,您的课程必须是pointer这样的

Esame *esame3=new Esame;

您必须使用->代替.来访问成员方法或变量。

esame3->method1();
esame3->varable1;

答案 1 :(得分:1)

Esame esame3();是一个函数声明。在这种情况下,esame3没有命名对象。它声明了一个名为esame3的函数,该函数不接受任何参数并返回Esame类型的对象。

这称为most vexing parse

要使用默认构造函数创建对象,请使用Esame esame3;(无括号):

Esame esame3;
esame3.setVoto(26); 
esame3.stampaEsame();