相关疑难解决方法(0)

如何从const方法调用非const方法?

我的类中有一个const方法,不能改为非const.在这个方法中,我需要调用一个非const方法,但编译器不允许我这样做.

它有什么办法吗?以下是我的代码的简化示例:

int SomeClass::someMethod() const {
    QColor saveColor = color();
    setColor(QColor(255,255,255)); // Calling non-const method

    // ....

    setColor(saveColor); // restore color

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

c++ methods const const-correctness

14
推荐指数
4
解决办法
2万
查看次数

当赋值运算符重载时,const类成员是否有用?

我有一个类,其成员不会被类的方法改变,所以我将其标记为const.我的问题是我使用默认赋值运算符就像复制构造函数一样,以避免多个声明.但在这种情况下,赋值运算符不会自动生成,因此我得到了一些编译器错误: 'operator =' function is unavailable.这似乎没有真正的生活场景,其中可以实际使用const类成员(例如,你在STL代码中看到过任何const成员吗?).

有没有办法解决这个问题,除了删除const

编辑:一些代码

class A
{
public :
   const int size;
   A(const char* str) : size(strlen(str)) {}
   A() : size(0) {}
};


A create(const char* param)
{
    return A(param);
}


void myMethod()
{
    A a;

    a = create("abcdef");
    // do something

    a = create("xyz");
    // do something
}
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
1
解决办法
1797
查看次数

需要C++静态方法

我有一个方法run()成员MyClass.编译时,我明白了

    Error   3   error C2662: 'MyClass::run' : 
    cannot convert 'this' pointer from 'const MyClass' to 'MyClass&'
Run Code Online (Sandbox Code Playgroud)

ITOH,如果我把这个方法设为静态,我没有错误.方法调用发生在这里:

Errors MyClass::execute( const AbstractExecutionContext &ctx ) const
{
    Errors errs;

    Watch wat; wat.restart();
    {

        run() ;

    }

    return errs;
}
Run Code Online (Sandbox Code Playgroud)

和这种方法的声明是

Errors execute(const AbstractExecutionContext &ctx) const;
Run Code Online (Sandbox Code Playgroud)

我希望我可以使这个方法不是静态的,因为如果它是静态的,run()调用的方法也必须是静态的,并且无法访问非静态的数据成员(我必须丑陋地将它们作为参数传递给方法) .

编译错误的原因是什么,什么是解决方案?

c++ static static-methods const

0
推荐指数
1
解决办法
174
查看次数

标签 统计

c++ ×3

const ×2

const-correctness ×1

methods ×1

static ×1

static-methods ×1