0

我有一个非常简单的问题。我正在尝试学习 C++,但遇到了一个小问题。这是代码

系统.h

#include <iostream>
#include "processor.h"
using namespace std;

class sys
{
    public:
        int id;
        sys()
        {
            id=0;
        }
};

处理器.h

#include <iostream>
using namespace std;
class proc
{
    public:
    const sys* s1;
    s1=new sys();
};  

错误说

"error C2512: 'sys' : no appropriate default constructor available" 

有一个默认构造函数。

我是 C++ 的初学者,所以请解释我做错了什么。谢谢你。

4

2 回答 2

2
  • 您不会在类体内初始化类成员,而是在类构造函数中这样做。
  • const成员是特殊成员,必须成员初始化列表中进行初始化。
  • 如果必须使用智能指针而不是原始指针,请尽可能避免使用动态分配的内存。

proc() : s1(new sys())
{
}
于 2013-09-22T12:31:41.770 回答
0

由于类proc正在使用类sys,因此包含顺序应该相反:

// sys.h
class sys {
   ...
};

// process.h
#include "sys.h"

class proc {
   ...
};
于 2013-09-22T12:34:40.803 回答