我有一个非常简单的问题。我正在努力学习C ++,我遇到了一些问题。这是代码
system.h中
#include <iostream>
#include "processor.h"
using namespace std;
class sys
{
public:
int id;
sys()
{
id=0;
}
};
processor.h
#include <iostream>
using namespace std;
class proc
{
public:
const sys* s1;
s1=new sys();
};
错误说
"error C2512: 'sys' : no appropriate default constructor available"
有一个默认构造函数。
我是C ++的初学者,所以请解释一下我做错了什么。谢谢。
答案 0 :(得分:2)
const
成员是特殊成员,必须在 Member initialization list 中进行初始化。proc() : s1(new sys())
{
}
答案 1 :(得分:0)
你必须new
一个不在类声明中的函数/方法中的成员指针。
要初始化和构建const
成员,您必须使用构造函数。
不要忘记delete
已分配的内存。
当您可以使用简单变量时,尽量不要使用指针。
proc() : s1(new sys())
{
}
~proc()
{
delete s1;
}
如果你可以避免使用指针,编程就会变得直接:
class proc
{
public:
const sys s1;
};
答案 2 :(得分:0)
由于班级proc
正在使用班级sys
,因此包含顺序应相反:
// sys.h
class sys {
...
};
// process.h
#include "sys.h"
class proc {
...
};