我有一个 C++ 类,如下所示:

class some_class {

    protected:
        decide_later some_variable;

    public:
        void some_random_function();

};

void some_class::some_random_function() {

    decide_later another_variable;

}

问题是,在创建类的实例之前,我不知道 some_variable 将是什么变量类型。我想要做的是如下所示:
some_class class_instance(std::string);

这将设置decide_later 使用std::string(或int,或double,或任何它被告知使用的)。此外,如果我可以稍后在属于该类的其他函数中使用decide_later 作为变量类型,那就太好了。例如,在函数 some_random_function() 中。

我曾尝试使用 boost::any 来做到这一点,但它似乎只适用于数字类型。此外,我认为如果我可以实际设置实际的变量类型,效率会更高。

这可能吗?

最佳答案

您正在寻找模板。像这样声明你的类:

template <typename T> class some_class {

    protected:
        T some_variable;

    public:
        void some_random_function() {
            T another_variable;
        }

};

并实例化它:
some_class<std::string> class_instance();

关于c++ - 在实例化期间为 C++ 类变量设置变量类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10561542/

10-14 16:46
查看更多