注册 登录
编程论坛 C++教室

为什么这样写编译不能通过?

pqsusu1 发布于 2009-08-03 00:47, 584 次点击
//文件A.cpp的内容
class A
{
    public:
        A(){}
        virtual ~A(){}
    protected:
    private:
};

//main.cpp的内容
class A
{
    public:
        A();
        virtual ~A();
    protected:
    private:
};

int main()
{
     A a;
    return 0;
}

[[it] 本帖最后由 pqsusu1 于 2009-8-3 00:56 编辑 [/it]]
7 回复
#2
傻朋2009-08-03 08:13
你只在类的内部声明了 构造函数跟析构函数
 但是你没有去实现。。
#3
傻朋2009-08-03 08:14
你只在类的内部声明了 构造函数跟析构函数
 但是你没有去实现。。
#4
pqsusu12009-08-03 08:27
以下是引用傻朋在2009-8-3 08:13的发言:

你只在类的内部声明了 构造函数跟析构函数
 但是你没有去实现。。


朋友带{}就是实现了!
#5
pangding2009-08-03 12:59
回复 楼主 pqsusu1
你有没有包含声明?如果包含了,A就被定义了两遍,当然编译过不了了。

你把你的错误和警告也发上来。以后问的时候如果有编译错误最好也发编译器给的错误和警告也发上来,这样有的问题就不用我们自己编译了。对着错误和警告直接分析源码会看的快一点~
#6
wxjeacen2009-08-03 16:48


[[it] 本帖最后由 wxjeacen 于 2009-8-3 16:50 编辑 [/it]]
#7
明次2009-08-03 21:35
编译要是能通过就怪了...
#8
pqsusu12009-08-04 10:22
以下是引用wxjeacen在2009-8-3 16:48的发言:



你好,你这种是标准的做法,将定义放头文件,成员函数的实现放到源文件。这样肯定是可以运行,书上也是这样用。

我的问题是:像1楼那样,将定义跟实现放同一源文件,然后在调用文件处再定义一次(直接定义而不是通过包含头文件),各文件单独编译是通过的。但链接时才出问题,我想问这是为什么?
1