使用模板时对对象的未定义引用

时间:2019-04-16 05:34:10

标签: c++

我正在尝试在构造函数中创建const obj = { key1: {key11: "key11", key12: "key12", key13: {key131: 22}}, key2: {key21: "key21", key22: "key22"}, key3: "key3", key4: [1,2,3, {key: "value"}] } const cloneObj = (obj) => { if (Object(obj) !== obj) return obj; else if (Array.isArray(obj)) return obj.map(cloneObj); return Object.fromEntries(Object.entries(obj).map( ([k,v]) => ([k, cloneObj(v)]) )); } // Clone the original object. let newObj = cloneObj(obj); // Make changes on the original object. obj.key1.key11 = "TEST"; obj.key3 = "TEST"; obj.key1.key13.key131 = "TEST"; obj.key4[1] = "TEST"; obj.key4[3].key = "TEST"; // Display both objects on the console. console.log("Original object: ", obj); console.log("Cloned object: ", newObj);。我有两个文件,.as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;}map

以下代码在我的.h文件中:

.cpp

在我的.h文件中,我有此代码。

`template <typename T, int numberOfElements>
class DataBase {
public:
    DataBase();
    void createBins(const MetaData &meta);
        void initializeBuckets(const MetaData &meta);
protected:
        //Two level indexing.
        std::map <T,  std::map <T, std::bitset<numberOfElements>*>> two_level_index;
       //Single level indexing for insertion.
        std::map <T,std::bitset<numberOfElements>*> index;

};
`

当我尝试创建类.cpp的对象时,如下所示: template<typename T, int numberOfElements> DataBase<T,numberOfElements>::DataBase() : index{} {}; template<typename T, int numberOfElements> void DataBase<T,numberOfElements>::createBins(const MetaData &meta) { std :: set<std :: string> vec = meta.notNumeric; std::map < std::string, std::bitset<numberOfElements>*> sr = two_level_index["Class"]; std ::bitset<numberOfElements> *p = sr["Aspen"]; std :: cout << "Printing " << std :: endl; std :: cout << p->size() << std ::endl; std::set<std::string>::iterator it = vec.begin(); while (it != vec.end()) { // Print the element it++; } std :: cout << "Ended" << std ::endl; } template<typename T, int numberOfElements> void DataBase<T,numberOfElements>:: initializeBuckets(const MetaData &meta){ std :: set<std :: string> vec = meta.notNumeric; std::set<std::string>::iterator it = vec.begin(); while (it != vec.end()) { Map attributeMap = meta.attributeNameMap; std :: vector<T> *temp = attributeMap[*it]; for ( auto i = (*temp).begin(); i != (*temp).end(); ++i ){ std::bitset<numberOfElements>* vecs = new std :: bitset<numberOfElements>(); index[*i] = vecs; two_level_index[*it] = index; } it++; } } `  然后我得到一个我不明白的错误。

错误是:

Screenshot of the error message.

0 个答案:

没有答案