标签: static-members

一个类不能有自己的静态constexpr成员实例吗?

这段代码给了我不完整的类型错误.问题是什么?一个类不允许拥有自己的静态成员实例吗?有没有办法达到同样的效果?

struct Size
{
    const unsigned int width;
    const unsigned int height;

    static constexpr Size big = { 480, 240 };

    static constexpr Size small = { 210, 170 };

private:

    Size( ) = default;
};
Run Code Online (Sandbox Code Playgroud)

c++ static-members c++11

41
推荐指数
3
解决办法
3194
查看次数

ASP.NET应用程序状态与静态对象

如果我有一个标准的ASP.NET应用程序,那么使对象静态而不是将对象实例置于Application状态之间有什么区别吗?

根据我的理解,这两个对象都存在于应用程序域的ONCE.

其次,对于ASP.NET站点,如果在引用的dll中有静态对象会发生什么.它也是app域的一部分,所以它总是存在一次?

asp.net application-state static-members

39
推荐指数
1
解决办法
9225
查看次数

静态向量的初始化

我想知道是否存在初始化静态向量的"更好"方式而不是下面的方法?

class Foo
{
    static std::vector<int> MyVector;
    Foo()
    {
        if (MyVector.empty())
        {
            MyVector.push_back(4);
            MyVector.push_back(17);
            MyVector.push_back(20);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例代码:)

push_back()中的值是独立声明的; 不是数组或其他东西.

编辑:如果不可能,告诉我也:)

c++ static-members stdvector

39
推荐指数
3
解决办法
8万
查看次数

什么是"typedef void(*Something)()"的意思

我试图理解这意味着什么,我正在看的代码

在.h

typedef void (*MCB)();
static MCB     m_process;
Run Code Online (Sandbox Code Playgroud)

在.C

MCB Modes::m_process = NULL;
Run Code Online (Sandbox Code Playgroud)

有时当我做的时候

m_process();
Run Code Online (Sandbox Code Playgroud)

我得到了分段错误,这可能是因为内存被释放了,我怎样才能在它被释放时进行调试?

我希望我的问题很清楚.

c++ typedef static-members void-pointers

39
推荐指数
4
解决办法
4万
查看次数

使用mockito或Jmockit模拟私有静态最终字段

我在我的类中使用私有静态最终LOGGER字段,我希望LOGGER.isInfoEnabled()方法返回false.如何使用mockito或jMockit模拟静态final字段

我的班级是:

  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;

  public class Class1 {

  private static final Logger LOGGER = LoggerFactory.getLogger(Class1.class);

    public boolean demoMethod() {
       System.out.println("Demo started");
       if (LOGGER.isInfoEnabled()) {
         System.out.println("@@@@@@@@@@@@@@ ------- info is enabled");
       } else {
         System.out.println("info is disabled");
       }
       return LOGGER.isInfoEnabled();
    }
  }
Run Code Online (Sandbox Code Playgroud)

它的junit是:

import mockit.Mocked;
import mockit.NonStrictExpectations;
import org.mockito.InjectMocks;
import org.mockito.MockitoAnnotations;
import org.slf4j.Logger;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import static org.testng.Assert.*;
import com.source.Class1;

public class MyTest {

  @InjectMocks
  Class1 cls1;

  @BeforeMethod
  public void initMocks() { …
Run Code Online (Sandbox Code Playgroud)

java junit jmockit static-members mockito

39
推荐指数
2
解决办法
5万
查看次数

C++静态成员初始化(模板内部有趣)

对于静态成员初始化,我使用嵌套的帮助器结构,它适用于非模板化的类.但是,如果封闭类由模板参数化,则如果未在主代码中访问辅助对象,则不会实例化嵌套初始化类.为了说明,一个简化的例子(在我的例子中,我需要初始化一个向量).

#include <string>
#include <iostream>

struct A
{
    struct InitHelper
    {
        InitHelper()
        {
            A::mA = "Hello, I'm A.";
        }
    };
    static std::string mA;
    static InitHelper mInit;

    static const std::string& getA(){ return mA; }
};
std::string A::mA;
A::InitHelper A::mInit;


template<class T>
struct B
{
    struct InitHelper
    {
        InitHelper()
        {
            B<T>::mB = "Hello, I'm B."; // [3]
        }
    };
    static std::string mB;
    static InitHelper mInit;

    static const std::string& getB() { return mB; }
    static InitHelper& getHelper(){ return mInit; }
};
template<class T> …
Run Code Online (Sandbox Code Playgroud)

c++ templates initialization static-members

38
推荐指数
2
解决办法
2万
查看次数

如何初始化标头中的静态成员

给定是一个具有静态成员的类.

class BaseClass
{
public:
    static std::string bstring;
};
Run Code Online (Sandbox Code Playgroud)

字符串显然是在类之外进行默认初始化.

std::string BaseClass::bstring {"."};
Run Code Online (Sandbox Code Playgroud)

如果我在标题中包含上面的行以及类,我会收到symbol multiply defined错误.它必须在单独的cpp文件中定义,即使使用include guardspragma once.

有没有办法在标题中定义它?

c++ class static-members

35
推荐指数
4
解决办法
4万
查看次数

C#静态变量 - 范围和持久性

我做了一个小实验:

public abstract class MyClass
{
  private static int myInt = 0;

  public static int Foo()
  {
    return myInt;
  }

  public static int Foo(int n)
  {
    myInt = n;
    return bar();
  }

  private static int bar()
  {
    return myInt;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我跑了:

MessageBox.Show(MyClass.Foo().ToString());
MessageBox.Show(MyClass.Foo(3).ToString());
MessageBox.Show(MyClass.Foo().ToString());
MessageBox.Show(MyClass.Foo(10).ToString());
MessageBox.Show(MyClass.Foo().ToString());
Run Code Online (Sandbox Code Playgroud)

我预期的结果是0,3,0,10,0.

令我惊讶的是,我得到了0,3,3,10,10.

这些变化持续多久了?程序执行的持续时间?调用静态方法的函数的持续时间?

c# static-methods static-members

34
推荐指数
4
解决办法
8万
查看次数

何时使用枚举,何时用静态成员替换它们?

最近发生了以下(样本)枚举......

enum Color
{
    Red,
    Green,
    Yellow,
    Blue
}
Run Code Online (Sandbox Code Playgroud)

......可以用看似更加类型安全的类替换:

class Color
{
    private Color() { }

    public static readonly Color   Red      = new Color();
    public static readonly Color   Green    = new Color();
    public static readonly Color   Yellow   = new Color();
    public static readonly Color   Blue     = new Color();
}
Run Code Online (Sandbox Code Playgroud)

对于"类型安全",我的意思是如果Color是枚举,则以下语句将起作用,但如果Color是上述类则不行:

var nonsenseColor = (Color)17;    // works if Color is an enum
Run Code Online (Sandbox Code Playgroud)

两个问题:

1)这种模式是否有广泛接受的名称(用类型安全类替换枚举)?

2)在哪种情况下应该使用枚举,什么时候更合适?

c# polymorphism enums static-members

33
推荐指数
1
解决办法
3万
查看次数

如何序列化Java类的静态数据成员?

当我们序列化对象时,静态成员不是序列化的,但是如果我们需要这样做,有什么办法吗?

java serialization static-members

32
推荐指数
4
解决办法
5万
查看次数