C++11中的Const成员变量

Const Member Variables in C++11

本文关键字:变量 成员 Const 中的 C++11      更新时间:2023-10-16

代码

   category::category ( const std::string p_name , std::string p_ImagePath) :
    m_name { p_name },
    m_ImagePath {p_ImagePath }
    {
    }

标题

#pragma once
#include <string>
class category
{
public:
    const int i;
    explicit category ( const std::string p_name ,const std::string p_ImagePath);
    ~category ( );
    std::string GetName ( );
private:
    std::string m_name;
    std::string m_ImagePath;
};

由于分配运算符,我总是会出现错误

Fehler 1错误C2280:"booking&booking::operator=(const-booking&)':试图引用已删除的函数C:\Program Files(x86)\Microsoft Visual C++Compiler 2013年11月CTP\include\utility 53

如果我试图在类中使用const成员变量或const静态成员变量。

I tried const i = 5;
static const i = 5;
and const i; -> i gets initialized in constructor.

什么都不管用,我该怎么解决?我不能使用constexpr,因为vs2013没有帮助它:(

我已经检查了一些关于Stackoverflow的问题,但一切都与constexpr 有关

您必须显式定义复制赋值运算符。由于class有一个const,非static数据成员,那么编译器定义的复制赋值运算符将被删除。

此外,在您的class定义中,const、非static数据成员的含义也完全不清楚。

至于构造函数,您可以删除函数说明符explicit,并将参数定义为常量引用。

category( const std::string &p_name, const std::string &p_ImagePath );