吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1707|回复: 5
收起左侧

[已解决] 请大佬们指点下初学C加加的小菜鸟一枚,为什么程序编译不通过?

[复制链接]
小菜鸟一枚 发表于 2020-3-5 16:55
本帖最后由 小菜鸟一枚 于 2020-3-6 08:37 编辑

[C++] 纯文本查看 复制代码
#include <iostream>
using namespace std;

class AB
{
public:
        int b;
        AB(int b)
        {
                this->b = b;
                cout << "构造函数AB()执行了" <<endl;
        }

        ~AB()
        {
                cout << "析构函数~AB()执行了" <<endl;
        }
};

class AC
{
public:
        int c;
        AC(int c)
        {
                this->c = c;
                cout << "构造函数AC()执行了" <<endl;
        }

        ~AC()
        {
                cout << "析构函数~AC()执行了" <<endl;
        }
};

//多继承派生类
class ABC :public AB,public AC
{
public:
        ABC():AB(3),AC(4)//初始化列表
        {
                cout << "构造函数ABC()执行了" <<endl;
        }

        ~ABC()
        {
                cout << "析构函数~ABC()执行了" <<endl;
        }
};

int main(int argc,char *argv[])
{
        ABC *pABC = new ABC();
        delete pABC;

        system("pause");
    return 0;
}


报错信息:
d:\users\lenovo\documents\visual studio 2010\projects\demo03\demo03\main.cpp(38): error C2371: “ABC”: 重定义;不同的基类型
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wingdi.h(2828) : 参见“ABC”的声明

说明:今天学到多继承,然后自己这样定义了两个类,想复习一下对象初始化列表的使用,然后两个基类定义了有参的构造函数,派生类继承这两个类,AB和AC两个
类没有默认的构造函数,我想到了初始化列表,然后编译就不通过了,请大家帮忙看看,谢谢!

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
玖公子 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

古月不傲 发表于 2020-3-5 17:17
换高一点版本的编译器

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
小菜鸟一枚 + 1 + 1 热心回复!

查看全部评分

absman1972 发表于 2020-3-5 18:08
Visual Studio 2019可以正常編譯並執行

[C++] 纯文本查看 复制代码
構造函數AB()執行了
構造函數AC()執行了
構造函數ABC()執行了
析構函數~ABC()執行了
析構函數~AC()執行了
析構函數~AB()執行了
請按任意鍵繼續 . . .

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
小菜鸟一枚 + 1 + 1 热心回复!

查看全部评分

totoroyyw 发表于 2020-3-5 18:39
我这里最新版的G++没有错误..可能你自己环境的问题吧

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
小菜鸟一枚 + 1 + 1 热心回复!

查看全部评分

 楼主| 小菜鸟一枚 发表于 2020-3-6 08:40
原来是这样啊,可惜我这5年前的电脑带不动最新版的vs2019,感谢大家的热心回答!
absman1972 发表于 2020-3-6 10:07
小菜鸟一枚 发表于 2020-3-6 08:40
原来是这样啊,可惜我这5年前的电脑带不动最新版的vs2019,感谢大家的热心回答!

剛剛又研究了一下,大概知道問題點了:
"wingdi.h"定義了一個叫ABC的struct,等於跟你的class ABC打架了
解決方法(擇一嘗試即可):
1.把class ABC改成其他名字, 避免跟ABC重覆即可
2.在include後面加入#pragma once,如下
#include <iostream>
#pragma once            

希望有幫助到你
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 20:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表