如何使用make"使用"方法中的关键字,将其作为类级

时间:2016-12-03 20:30:47

标签: c++ c++14

我正在尝试创建一个api,其中包含一个类,它将采用任意数据类型的向量和"检索"就是这样。我的主要目标是

  1. 创建类时,用户(使用api的用户)需要 提到数据类型。
  2. 在检索向量时,用户不应该提及数据类型。对于Ex:一个巨大的这样的向量和程序集合 它使用这个api在csv中输出它们。我会打电话给 每个类的检索方法,它将返回一个向量和我 将以csv格式打印到文件中。
  3. 这是我的代码:

    #include<iostream>
    #include<vector>
    typedef void* handle;
    
    class p{
    
        public:
            template<typename T>
            void initialize(std::vector<T> p){
                typeC = T;
                h = &p;
            }
    
            auto returnVec(){
    
                return *(reinterpret_cast<std::vector<typeC *>>(h));
            }
    
        private:
            using typeC = int ;
            handle h;
    };
    
    
    int main(){
        std::vector<std::string>v{"Hare","Krishna"};
        p i;
        i.initialize<std::string>(v);
        std::cout<<i.returnVec()[0];
    }
    

    现在,我能够存储向量但是为了检索,重新解释强制转换应该需要知道数据类型。所以我想如果我可以使用using关键字来存储数据类型,我以后可以在reinterpret_cast中使用它来返回一个向量。但我无法这样做。如果出现以下情况,我可以解决这个问题:

    1. 我可以以某种方式使这个using typeC = T声明影响到 类级别,以便在调用returnVec()时仍然是typeC 作为数据类型存在。
    2. 以某种方式通过a存储数据类型 变量
    3. 提前致谢:)

0 个答案:

没有答案