在C++中,不能通过括号来定义和初始化一个类成员。但是,我们可以通过以下几种方法来解决这个问题:
class MyClass {
public:
MyClass(int val) : myMember(val) {}
private:
int myMember;
};
在这个例子中,我们使用构造函数初始化列表来初始化myMember成员。
class MyMember {
public:
MyMember() {}
MyMember(int val) : myVal(val) {}
MyMember& operator=(const MyMember& other) {
if (this != &other) {
myVal = other.myVal;
}
return *this;
}
private:
int myVal;
};
class MyClass {
public:
MyClass() {}
MyClass(int val) {
myMember = MyMember(val);
}
private:
MyMember myMember;
};
在这个例子中,我们定义了一个默认构造函数和一个接受int参数的构造函数来初始化MyMember类成员。
class MyClass {
public:
MyClass() {}
MyClass(int val) {
initMember(val);
}
void initMember(int val) {
myMember = val;
}
private:
int myMember;
};
在这个例子中,我们定义了一个initMember函数来初始化myMember成员。
无论使用哪种方法,我们都可以避免使用括号来定义和初始化一个类成员。