c++类 dat, 公有函数内使用其他全局函数,如何对dat内的私有变量赋值
时间: 2024-02-25 17:59:45 浏览: 18
在C++中,类的私有成员只能在类的内部访问,因此你可以在类的公有函数中调用其他全局函数来对私有成员进行赋值。具体实现可以参考以下代码示例:
```c++
// 假设类 dat 的私有成员为 private_var
class dat {
private:
int private_var;
public:
void setPrivateVar(int value) {
// 在公有函数中调用全局函数
int new_val = globalFunc(value);
// 对私有变量赋值
private_var = new_val;
}
// 其他成员函数
// ...
};
// 全局函数
int globalFunc(int value) {
// 对传入的 value 进行处理,这里简单地将它乘以 2
return value * 2;
}
```
在上面的代码中,类 `dat` 的公有函数 `setPrivateVar` 中调用了全局函数 `globalFunc`,并将返回值赋值给私有成员 `private_var`。
相关问题
C++可以把类内的public函数赋值给公共变量的函数指针吗
是的,C++可以把类内的public函数赋值给公共变量的函数指针。如果一个类内的public函数需要作为函数指针来使用,在类的定义中可以声明一个public函数指针类型的成员变量,然后在类的构造函数中把该成员变量赋值为类内的public函数,例如:
```
class MyClass {
public:
typedef void (MyClass::*FuncPtr)();
FuncPtr ptr;
void myFunc() {
// do something
}
MyClass() {
ptr = &MyClass::myFunc;
}
};
```
在这个例子中,`FuncPtr`是一个指向`MyClass`类中没有参数并返回`void`类型的成员函数指针类型,`ptr`是一个`FuncPtr`类型的公共变量,`MyClass`类中的`myFunc`函数被赋值给了`ptr`变量。
c++全局函数类内 类外
C++中的函数可以分为全局函数、类内函数和类外函数。
全局函数是定义在命名空间中的函数,它不属于任何类或对象,可以被程序中的任何地方调用。全局函数通常用于解决与特定类或对象无关的问题。
类内函数是定义在类内部的成员函数,它们属于类的一部分,并且可以访问类的所有成员(包括私有成员)。类内函数可以直接通过类的对象或指针调用。
下面是一个示例代码:
```cpp
class MyClass {
public:
void classMemberFunc() {
// 类内函数
// 访问类的成员
}
};
void globalFunc() {
// 全局函数
// 与特定类无关
}
int main() {
MyClass obj;
obj.classMemberFunc(); // 调用类内函数
globalFunc(); // 调用全局函数
return 0;
}
```
类外函数是定义在类外部的成员函数,需要使用类名和作用域解析运算符(::)来指明函数所属的类。类外函数也可以访问类的所有成员(包括私有成员)。
下面是一个示例代码:
```cpp
class MyClass {
public:
void classMemberFunc(); // 在类内声明
};
void MyClass::classMemberFunc() {
// 类外定义
// 访问类的成员
}
int main() {
MyClass obj;
obj.classMemberFunc(); // 调用类内函数
return 0;
}
```
在类外定义函数时需要使用作用域解析运算符(::)来指明函数所属的类,这样编译器才能正确识别函数与类的关联关系。