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

时间:2014-12-01 22:18:08

标签: 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方法,但得到了一个&#34;期望一个表达式&#34;错误。

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

#include <iostream>

using namespace std;

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

这里有什么问题,谢谢!

1 个答案:

答案 0 :(得分:3)

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

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

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

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