关于在C ++中实现抽象函数的问题?

时间:2011-05-01 04:41:12

标签: c++

我正在学习和测试一段C ++代码,如下所示:

#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
#include <cstring>
class Shape {
public:
    Shape() {};
    ~Shape() {};
    virtual void display() const = 0;
    virtual double volume() const = 0;
};

class Square : public Shape {
public:
    Square() {};
    ~Square() {};
    void display() const;
    double volume() const;
};

void Square::display() const {
    cout << "Square!!!!!!!!!!!!!!" << endl;
}
double Square::volume() const {
    cout << "Square Volume........." << endl;
    return 0.0;
}

int _tmain(int argc, _TCHAR* argv[])
{
    Shape *s;
    s = new Square; // error here
    (*s).display();

    return 0;
}

以上代码无法成功编译。它产生:“致命错误LNK1120:1个未解析的外部”。 任何人都可以帮我解决这个问题吗? 我正在使用MS VS C ++ 2005。 感谢

2 个答案:

答案 0 :(得分:1)

以上代码在VS 2010以及Ideone上正确编译和运行。

检查this

在上面的代码片段中实现抽象函数的方式没有任何问题。

答案 1 :(得分:0)

我很确定你的问题是你的主要声明。

如果您将其更改为标准主要定义,我相信您的链接问题将得到修复。

 int main()
 {
   Shape *s = new Square(); // error here
   s->display();
   return 0;
 }