有一些错误,我找不到它们,所以感谢您的帮助。 错误:obj1.print(); obj2.print();
提示:表达式必须包含类类型。
更改代码并获得以下输出: TestClass1:0 TestClass2
注意:
`
struct TestClass1 {
TestClass1(int i=0) {
m_i = i;
}
void print() {
cout << "TestClass1:" << m_i << endl;
}
int m_i;
};
class TestClass2 {
public:
TestClass2(int) {}
void print() {
cout << "TestClass2" << endl;
}
private:
~TestClass2() { }
};
int main() {
TestClass1 obj1();
TestClass2 obj2();
obj1.print();
obj2.print();
return 0;
}
`
答案 0 :(得分:0)
在不更改程序结构的情况下,我只能指出问题所在。
TestClass2
没有要在TestClass2 obj2();
中初始化的默认构造函数TestClass2
析构函数是私有的:“错误:类型为'TestClass2'的临时类型具有私有析构函数” TestClass1 obj1{};
或不使用括号:TestClass1 obj1;
:“警告:解释为空括号作为函数声明[-Wvexing-parse]“ explicit
,以防止不必要的转换,除非您要这么做。有了这些更改,运行时我得到以下输出:
TestClass1:0
TestClass2