作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我天真地认为在模板类中我可以引用不存在的对象,因为在实例化之前它们不是必需的。但这不起作用(编译器提示未声明的 NAME):
template<typename H>
class HandlerInfoClass
{
std::string_view getName()
{
return NAME;
}
};
有没有办法在不使用预处理器或添加新模板参数的情况下克服这个问题(其中一些可能具有此上下文中不允许的类型)?
最佳答案
不,不可能引用不存在的对象。模板函数的一个关键特性是对于给定的参数,输出总是相同的。因此,在代码中实例化模板的位置并不重要,它始终会为相同的参数调用相同的函数。
您正在构建的内容看起来像是“处理程序”的特征类。写这个的正确方法是为每个不同的类型专门化类,如下所示:
template<typename H>
class HandlerInfoClass;
template<>
class HandlerInfoClass<HandlerType>
{
static std::string_view getName()
{
return "HandlerType";
}
};
如果您返回的字符串在运行时发生变化,您不应该构建一个traits 类,而是添加一个
getName()
对象本身的功能。
关于c++ - 如何从模板类中尚 undefined symbol 中引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65439289/
我需要面对一个架构/设计决策。 我正在开发一个 Cordova/Meteor 应用程序,它具有独特的入门体验。新用户会看到一个向导,引导他们完成填写某些表单的步骤。 向导流程会等到最后一步才能注册用户
我想通过 psql 在空数据库中加载一些 SQL 函数: psql -d my_database -f fuctions.sql --set ON_ERROR_STOP=1 我使用 --set ON_
我是一名优秀的程序员,十分优秀!