我做了一个名为Matrix的班级。该类有两个构造函数,一个默认构造函数和一个复制构造函数。另外还有一个名为Determinant的公共方法。主要是我写道:
Matrix a();
a.Determinant()
或
Matrix a();
a->Determinant()
但它们都不是有效的。 我打印了a的类型,但我不明白这是什么类型的?
答案 0 :(得分:0)
这是C ++最令人烦恼的解析。这一行:
Matrix a();
被解释为函数的声明,它不接受任何参数并返回Matrix
。创建默认构造对象的正确方法是
Matrix a;
答案 1 :(得分:0)
该行:
Matrix a();
声明一个返回Matrix的函数,而不是一个默认构造的对象。省略括号。
请参阅:https://en.wikipedia.org/wiki/Most_vexing_parse以了解更棘手的案例。 (这必须是重复的,但快速搜索并没有改变。我会在一分钟内看起来更难。)