2016-07-06 63 views
-1

我有一个类CompNum,我需要他与的值初始化专用静态的Crry变量0(可变必须是私有)。错误:预期构造,析构函数,或类型转换之前“=”令牌

因此,我做了一个公共函数,返回crry变量的引用,以便能够使用carry()函数更改该变量。

class CompNum { 
private: 
    typedef char littlenum; 
    static littlenum crry; 
    ... 
public: 
    static littlenum& carry() { /*Do something with crry*/ return crry; } 
    ... 
}; 

CompNum::carry() = 0; 

编译这一点,它抛出这个错误:

error: expected constructor, destructor, or type conversion before '=' token 

在行:

CompNum::carry() = 0; 

目标:

这里的目标是能够改变crry变量,但每次我想改变它时,都需要先做一些事情,所以做CompNum::crry = 123不是一个解决方案,这就是为什么我认为我需要一个公共方法来实现这一点。

+0

您的意思是写'littlenum CompNum ::进位(){回报0; }'? –

+0

该行意在处理'carry'函数还是'crry'数据记忆? –

+0

@JamesAdkison与crry数据成员 – Garmekain

回答

2

当您声明static成员变量时,您实际上只是指定它存在,但不为其创建存储。你需要 “确定” 它的类外:

CompNum::littlenum CompNum::crry; 

全码:

class CompNum { 
private: 
    typedef char littlenum; 
    static littlenum crry; 
public: 
    static littlenum& carry() { /*Do something with crry*/ return crry; } 
}; 
CompNum::littlenum CompNum::crry; 

int main() 
{ 
    CompNum::carry() = 0; 
} 

Live on Coliru

相关问题