Я пытаюсь создать абстрактный класс, который позволяет вам вызвать метод Fun
, который является статическим, который печатает "Abstract Class"
, однако он не работает, поскольку я используя *this
в статическом методе. Я смущен о том, как я могу reslove эту проблему:C++ Вызов абстрактного метода из статического метода с помощью * this
class A
{
private:
virtual void __Fun() = 0
{
std::cout << "Abstract Class";
}
static void _Fun(A &instance)
{
instance.__Fun();
}
public:
static void Fun()
{
_Fun(*this); // 'this' may only be used in nonstatic member functions
}
};
int main()
{
A a; // Throws - which is good: class is abstract
A::Fun(); // Desired result
}
Как я уверен, вы знаете, в статическом контексте нет «этого». Какова общая цель здесь? –
Почему вы определяете функцию, которая должна быть чистой виртуальной? – user2485710
@OliCharlesworth - Я случайно вырезал статическое ключевое слово на двух из функций. Добавлено сейчас :) – Joseph