在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"。