繁体   English   中英

关于C ++中虚函数继承的难题

[英]Puzzle about virtual function inheritance in C++

我是C ++中的noob,我有以下头文件(Header.h)

#ifndef HEADER_H
#define HEADER_H

#include <iostream>

using namespace std;

class Predicate
{
public:
    virtual void print() = 0;
};

class UnaryIntegerPredicate : public Predicate 
{
public:
    virtual void print();
};

class BiaryIntegerPredicate : public Predicate
{
public:
    virtual void print();
};

#endif

在另一个单独的.cpp文件(Source.cpp)中,我试图实现print方法,但得到了“预期的表达式”错误。

#include "stdafx.h"
#include "Header.h"

#include <iostream>

using namespace std;

UnaryIntegerPredicate::UnaryIntegerPredicate() : Predicate()
{
    virtual void print()
    {
        cout << "int : boolean" << endl;
    }
}

这里有什么不对,谢谢!

我发现你可能来自Java背景。 你需要的是什么

void UnaryIntegerPredicate::print()
{
    cout << "int : boolean" << endl;
}

你不需要那些东西。 由于您已在头文件中声明UnaryIntegerPredicate派生自Predicate ,因此您不会在实现文件中再次提及它。 通过在方法名称前加上上面显示的类名称,可以显示正在编写的print方法是UnaryIntegerPredicate类的print方法。

您也不需要cpp文件中的virtual关键字,因为已在头文件中指定了该关键字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM