C++:以模板对象为参数的模板.导致连杆错误
C++ : template taking template object as parameter. Linkage error caused
我搜索了很长时间,没有找到任何问题的答案(尽管我试图应用我找到的一些技术)。问题是:
我应该创建一个包含两个参数的模板:andinteger和andobject(另一个模板的实例)。尽管这个模板类继承了其他模板,但我认为这些类不是问题的一部分。代码如下:
template <typename Type, const ConPol<Type>& Div>
class ModPol : public Pol<Type>, public VecF<Type, Div.size()>{
private:
//
protected:
//
public:
// constructors & destructor
ModPol()
virtual ~ModPol();
};
当我尝试调用这个特定的类时,我使用以下行:
const ConPol<int> poly;
ModPol<int, &poly> modpoly;
不幸的是,我得到了这个错误:
错误:非类型模板参数引用了对象"poly"没有链接
我想知道如何能够实例化我的模板类。不要犹豫,用简单的词语来解释(我认为自己是个初学者)。
干杯!
当您在C++中声明一个全局对象为const
时,默认情况下它具有内部链接。这意味着该对象与其他源文件中具有相同名称和类型的任何对象都无关。
但有一条规则是,如果您将对对象的引用作为模板参数传递,那么它必须具有外部链接,即无论在哪个文件中使用,都必须是引用完全相同对象的名称。
所以poly
是不允许的,因为它是const
,所以有内部链接。
解决方案是覆盖默认值,并表示您希望poly
具有外部链接:
extern const ConPol<int> poly;
相关文章:
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 模板,函数使用错误的构造函数来复制我的对象
- 有没有办法让编译器在我放置字符串而不是 nlohmann::json 对象时抛出错误?
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 错误:malloc:对象 0x7f9edf504080 的 *** 错误:未分配正在释放的指针
- 从对象C++中的文件读取内容时出现分段错误
- cout 新创建的对象引发运行时错误
- 错误:"释放后使用包装器对象 (WRAPPER_ESCAPE)"
- 使用返回对象的函数处理错误
- 创建 QtChart 对象会在运行时创建EXC_BAD_ACCESS错误
- 错误:无法传递非平凡类型"std::string"的对象和更多错误
- 该对象具有与成员函数不兼容的类型限定符.为什么会出现此错误?
- 如何在类模板的成员函数中正确调用函数对象?正在生成 Visual Studio 编译器错误 C2440
- 尝试将对象插入空指针数组时出现分段错误
- 错误:三元运算符无法在对象中正常工作"cout"
- C++:如果括号为空,为什么不抛出错误对象?
- qt vsaddin错误对象引用未设置为对象的istanse
- 如何从函数返回成功或错误对象?
- 复制构造函数错误:对象的类型限定符与成员函数不兼容
- 如何在本机插件中创建node.js错误对象