c++ - 接口(interface)和实现 C++

标签 c++ interface compiler-errors

我正在编写一个代码来分离接口(interface)和它的实现但是它有一个错误,我遵循了接口(interface)和类的正确语法,我已经看到了很多关于这个主题的例子,知道我是一个前 C# 程序员。

代码:

#include "stdafx.h"
#include<iostream>
#include <String>
using namespace std;

            ///////////////////EMPLOYEE CLASS AND INTERFACE //////////////
class Interface_Employee
{

public:
    Interface_Employee() {}
    virtual ~Interface_Employee() {}
    virtual void print() = 0;    // "= 0" part makes this method pure virtual, and
                                 // also makes this class abstract.
};

class Employee : public Interface_Employee
{
    int ID, Age;
    Bank ac1, ac2; //composition
public:
    Employee(int a, int b, Bank account1, Bank account2)
        : ac1(account1), ac2(account2)
    {
        ID = a; Age = b;
    }
    ~Employee() {}


    // Provide implementation for the first method

    void print()
    {
        cout << "Age is:/n" << Age << "ID is:" << ID;
        ac1.print();
        ac2.print();
    }
};
                 ////////////BANK CLASS AND INTERFACE//////////////////


      class Interface_Bank
      {
          public:
          Interface_Bank() {}
          virtual ~Interface_Bank() {}
          virtual void print() = 0;    // "= 0" part makes this method pure virtual, and
                               // also makes this class abstract.
      };

      class Bank : public Interface_Bank
      {
        private:
        int balance, ID;

        public:
        Bank(int a, int b)
        {
          balance = a;
          ID = b;
        }
        ~Bank() {}

     // Provide implementation for the first method
        void print()
            {
              cout << "Balance is:/n" << balance << "ID is:" << ID;
            }


           };

        class Output {

           int main(void)
            {
            Bank a(1000, 1);
            Bank b(2000, 2);
            Employee c(2, 25, a, b);

            return 0;
           }

          };

错误:

严重性代码描述项目文件行抑制状态 错误 C3646 'ac1':未知覆盖说明符 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 22
错误 C2059 语法错误:',' console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 22
错误 C2238 在“;”之前出​​现意外标记 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 22
错误 C2061 语法错误:标识符“Bank” console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 24
错误 C2065 “account1”:未声明的标识符 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 25
错误 C2065 “account2”:未声明的标识符 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 25
错误 C2614 “员工”:非法成员初始化:“ac1”不是基础或成员 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app .cpp 25
错误 C2614 “员工”:非法成员初始化:“ac2”不是基础或成员 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app .cpp 25
错误 C2065 'ac1':未声明的标识符 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 37
错误 C2228 '.print' 的左侧必须具有类/结构/union console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 37< br/> 错误 C2065 'ac2': 未声明的标识符 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 38
错误 C2228 '.print' 的左侧必须具有类/结构/union console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 38< br/> 错误 C2661 'Employee::Employee':没有重载函数需要 4 个参数 console_App c:\users\dell_alrfou\source\repos\console_app\console_app\console_app.cpp 81

最佳答案

在尝试使用它之前,您需要声明或定义 Bank 类。

您需要将 Bank(及其 Interface_Bank 基类)的定义移动到 class Employee 之前。

关于c++ - 接口(interface)和实现 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53183465/

相关文章:

c++ - 编译器无法推导出模板函数的类型?

C# 将集合作为接口(interface)集合传递

perl - 无法编译我的 perl 脚本。让一切正常工作的最简单方法是什么?

java - 为什么要在 Java 中使用静态嵌套接口(interface)?

oop - 接口(interface)实现(接口(interface)隔离原则)

c++ - 在 MSVC 2010 上使用 bjam 构建 Boost 1.50 时出错

c - 多个VC编译错误

c++ - 我需要对 "Spaces"(世界空间、 View 空间、投影空间、局部空间和屏幕空间)的概念进行一些澄清(c++、direct3d 11)

c++ - 在 Qt 中撤消 QTableWidget 的单个单元格?

c++ - 如何将 C/C++ printf() 消息重定向到 Windows Phone 日志系统