을 덮어 쓰기 :가변 인자 템플릿과 나는 다음과 같은 방법으로 방법을 덮어 쓸 어떻게 든 수 있는지 궁금
#include <iostream>
#include <tuple>
template<typename P, typename ...Keys>
class Object {
public:
void method1(P p, Keys... keys) {
method2(std::make_tuple(keys...), p);
}
void method2(const std::tuple<Keys...> my_tuple, int id) {
printf("Hello1!");
}
};
class MyObject : public Object<int, char, char> {
public:
void method2(const std::tuple<int, char> my_tuple, int id) {
printf("Hello2!");
}
};
int main(int argc, char *argv[]) {
MyObject obj;
int a = 13;
obj.method1(a, 'a', 'c'); // prints Hello1! and not Hello2!
}
이 코드 인쇄 'Hello1'. 'Hello2'를 출력하고 싶습니다.
나는 다음과 같은 오류가
abstract void method2(const std::tuple<Keys...> my_tuple, int id) = 0;
에 방법 2를 변경하는 경우 :
오류 : 변수가 추상 형식 '을 MyObject'OBJ의 수 'obj와'선언 할 수 없습니다;
main.cpp : 16 : 7 : 참고 : 다음 가상 함수가 'MyObject'내에서 순수하기 때문에 :
MyObject에서 method2를 덮어 쓰는 올바른 방법은 무엇입니까?
최저
, 모리츠
게시 한 오류는 '가상'기능에 관한 것이지만 코드에는 아무것도 없습니다. –
마찬가지로 "method2를 가상 함수로 변경하면 ..."라고 언급했습니다. 가상 기능이 없으면 그냥 "Hello1"을 인쇄합니다. – moo