[英]interface and implementation C++
I'm writing a code to separate interface and it's implementation but it has an error, I followed the correct syntax of interfaces and classes ,I have seen many examples on this subject, Knowing I'm a former C# programmer. 我正在编写代码以分离接口及其实现,但是它有一个错误,我遵循接口和类的正确语法,我在这个主题上看到了很多示例,知道我是前C#程序员。
code: 码:
#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;
}
};
Error: 错误:
Severity Code Description Project File Line Suppression State Error C3646 'ac1': unknown override specifier console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 22 严重性代码说明项目文件行抑制状态错误C3646'ac1 ':未知替代说明符 console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 22
Error C2059 syntax error: ',' 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
Error C2238 unexpected token(s) preceding ';' 错误C2238 ';'之前的意外标记 console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 22
console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 22
Error C2061 syntax error: identifier 'Bank' console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 24 错误C2061语法错误:标识符' Bank'console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 24
Error C2065 'account1': undeclared identifier console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 25 错误C2065'account1':未声明的标识符 console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 25
Error C2065 'account2': undeclared identifier 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
Error C2614 'Employee': illegal member initialization: 'ac1' is not a base or member 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
Error C2614 'Employee': illegal member initialization: 'ac2' is not a base or member 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
Error C2065 'ac1': undeclared identifier console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 37 错误C2065'ac1':未声明的标识符 console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 37
Error C2228 left of '.print' must have class/struct/union console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 37 '.print'左边的错误C2228 必须具有class / struct / union console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 37
Error C2065 'ac2': undeclared identifier console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 38 错误C2065'ac2':未声明的标识符 console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 38
Error C2228 left of '.print' must have class/struct/union console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 38 '.print'左边的错误C2228 必须具有class / struct / union console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 38
Error C2661 'Employee::Employee': no overloaded function takes 4 arguments console_App c:\\users\\dell_alrfou\\source\\repos\\console_app\\console_app\\console_app.cpp 81 错误C2661 '雇员::雇员':没有重载函数采用4个参数 console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 81
You need to declare or define the Bank
class before you attempt to use it. 您必须先声明或定义
Bank
类,然后再尝试使用它。
You need to move the definition of Bank
(and its Interface_Bank
base class) to before class Employee
. 您需要将
Bank
的定义(及其Interface_Bank
基类)移到class Employee
类之前。
Bank
, you should declare or define it Bank
之前,应先声明或定义它 int main()
shouldn't in a class
int main()
不应在class
The following code
could work: 以下
code
可以工作:
#include<iostream>
#include <String>
using namespace std;
class Interface_Bank
{
public:
Interface_Bank() {}
virtual ~Interface_Bank() {}
virtual void print() = 0;
};
class Bank : public Interface_Bank
{
private:
int balance, ID;
public:
Bank(int a, int b) : balance(a), ID(b)
{
}
~Bank() {}
void print()
{
cout << "Balance is:/n" << balance << "ID is:" << ID;
}
};
class Interface_Employee
{
public:
Interface_Employee() {}
virtual ~Interface_Employee() {}
virtual void print() = 0;
};
class Employee : public Interface_Employee
{
private:
int ID, Age;
Bank ac1, ac2;
public:
Employee(int a, int b, Bank account1, Bank account2)
: ID(a), Age(b), ac1(account1), ac2(account2)
{
}
~Employee() {}
void print()
{
cout << "Age is:/n" << Age << "ID is:" << ID;
ac1.print();
ac2.print();
}
};
int main(void)
{
Bank a(1000, 1);
Bank b(2000, 2);
Employee c(2, 25, a, b);
c.print();
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.