C ++通过将静态成员变量作为参数传递来初始化它?

时间:2015-11-14 14:29:03

标签: c++ class initialization

我有一个静态成员变量,我想通过将它传递给修改自己参数的函数来初始化它,如:

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文件中初始化它?

2 个答案:

答案 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文件来使用它)