error: expected constructor, destructor, or type conversion before '=' token
error: expected constructor, destructor, or type conversion before '=' token
我有一个class CompNum,我需要他用值0初始化私有静态crry变量(变量必须 保密)。
所以我创建了一个 public 函数返回 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
不是解决方案,这就是我认为的原因我需要一个 public 方法来实现。
当你声明一个static
成员变量时,你实际上只是指定它存在,而不是为它创建存储。您需要 "define" 它在 class 之外:
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;
}
我有一个class CompNum,我需要他用值0初始化私有静态crry变量(变量必须 保密)。
所以我创建了一个 public 函数返回 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
不是解决方案,这就是我认为的原因我需要一个 public 方法来实现。
当你声明一个static
成员变量时,你实际上只是指定它存在,而不是为它创建存储。您需要 "define" 它在 class 之外:
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;
}