如何在 C++ 中使作用域变量成为全局变量?

How to make a scoped variable global in C++?

我正在处理一个大型项目,需要将作用域变量设置为全局变量,以便可以在整个项目中访问它 class。

可能使用它的一个简单场景是使整数 x 全局化。

class a
{
public:
    a()
    {
        int x;
    }

    void print()
    {
        std::cout << x << std::endl;
    }
}

更复杂的情况可能包括使 FunctionTypeClass<FunctionType> FunctionTypeDataStore:

class thread
{
public:
    template<typename FunctionType>
    thread(FunctionType* function)
    {
        FunctionTypeClass<FunctionType> FunctionTypeDataStore;
    }

    FunctionTypeClass get_function_type()
    {
        return FunctionTypeDataStore;
    }


    ~thread()
    {
    }

    template<typename StoreFunctionTypeTemp>
    class FunctionTypeClass
    {
        StoreFunctionTypeTemp Variable;
    }
}

从中创建一个成员变量并模板化您的 class,而不是构造函数:

template<typename FunctionType>
class thread
{
private:
    template<typename StoreFunctionTypeTemp>
    class FunctionTypeClass
    {
        StoreFunctionTypeTemp Variable;
    };

    FunctionTypeClass<FunctionType> FunctionTypeDataStore;
public:

    thread(FunctionType* function) { }

    FunctionTypeClass<FunctionType> get_function_type()
    {
        return FunctionTypeDataStore;
    }
};