c++ - 在另一个类中初始化指针

标签 c++ pointers

我有一个非常简单的问题。我正在尝试学习 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++ 的初学者,所以请解释我做错了什么。谢谢。

最佳答案

  • 您不在类体内初始化类成员,而是在类构造函数中进行初始化。
  • const 成员是特殊成员,它们必须 Member initialization list 中初始化.
  • 尽可能避免使用动态分配的内存,如果您必须使用智能指针而不是原始指针。

proc() : s1(new sys())
{
}

关于c++ - 在另一个类中初始化指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18943785/

相关文章:

c++ - 指针问题.. ( C++ )

c++ - 摆脱科学记数法 C++

C++ 对和指针

c++ - new [size_t] + 1 返回什么

c++ - opengl中的棋盘

c - 传递两个参数

c++ - 将指针数组地址传递给函数并更新地址中的数据

c++ - 将左 const 添加到指针数组

c++ - 使用 freeglut 在 Windows 10 上出现 glDebugMessageCallback 问题

c++ - 使用 std::optional 作为常规指针与使用 has_value() 和 value