在C++中,编译时已知参数的纯虚函数可以通过模板实现。下面是一个示例解决方案:
#include
template
struct MyClass {
virtual void foo() = 0;
};
template
struct MyDerivedClass : public MyClass {
void foo() override {
std::cout << "Foo called with parameter: " << N << std::endl;
}
};
int main() {
MyDerivedClass<42> obj;
obj.foo(); // 输出: Foo called with parameter: 42
return 0;
}
在上述示例中,我们定义了一个模板类MyClass
,其中的纯虚函数foo
的参数是一个编译时已知的整数N
。然后,我们派生出一个模板类MyDerivedClass
,继承自MyClass
,并实现了foo
函数。
在main
函数中,我们使用MyDerivedClass<42>
创建了一个对象obj
,并调用了它的foo
函数。在编译时,参数N
的值已知为42,因此输出会是"Foo called with parameter: 42"。