我有一个静态成员变量,我想通过将它传递给修改自己参数的函数来初始化它,如:
Class MyClass
{
static RECT rcRect;//The RECT structure defines the coordinates of the upper-left and lower-right corners of a rectangle.
}
GetClientRect(GetDesktopWindow(),&rcRect);
//Windows API,
//GetDesktopWindow retrieves a handle to the desktop window ,
//GetClientRect gets the coordinates of the desktop's client area ,
//and passes it to rcRECT
我能想到的唯一方法是在main函数中初始化它。 我的问题是:这是唯一的方法吗?如何在.h文件中初始化它?
答案 0 :(得分:1)
您的函数只会在函数返回后立即修改超出范围的p
副本。
修改使用参考参数传递的任何变量:
void func(Typename& p)
// ^
可以使用constexpr
:
class Foo {
static constexpr Typename func();
static constexpr Typename bar = func();
};
请见here。
答案 1 :(得分:1)
你可以在.h文件中修改它:
#ifndef FILENAME_H
#define FILENAME_H
如果需要,您还可以在此处包含您需要的任何标头,例如stdio或stdlib 然后编写程序/功能
void func(Typename& p);
之后你必须创建一个.cpp文件来实现这个头文件(因为在头文件中你只编写过程/函数而不是实现)
#include "filename.h"
void func(Typename& p)
{
//code here,
//modifies the value of p
};
最后在您的驱动程序中(主程序可以通过包含.h文件来使用它)