[英]interface and implementation C++
我正在編寫代碼以分離接口及其實現,但是它有一個錯誤,我遵循接口和類的正確語法,我在這個主題上看到了很多示例,知道我是前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
'.print'左邊的錯誤C2228 必須具有class / struct / union console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 37
錯誤C2065'ac2':未聲明的標識符 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
錯誤C2661 '雇員::雇員':沒有重載函數采用4個參數 console_App c:\\ users \\ dell_alrfou \\ source \\ repos \\ console_app \\ console_app \\ console_app.cpp 81
您必須先聲明或定義Bank
類,然后再嘗試使用它。
您需要將Bank
的定義(及其Interface_Bank
基類)移到class Employee
類之前。
Bank
之前,應先聲明或定義它 int main()
不應在class
以下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.