[英]c++ object type array contains subobject
我有使用接口和對象的 Java 代碼。 但是我不能用 C++ 寫它。 你能幫幫我嗎?
有一個接口名為Operation.java這里是代碼。
public interface Operation {
int evaluation(int x, int y);
}
有一個 class 執行操作 class 名為Multiply.java這是代碼。
public class Multiply implements Operation {
public int eval(int x, int y) {
return = x*y;
}
}
還有一個 class 執行操作 class 名為Summation這是代碼。
public class Add implements Operation {
public int eval(int x, int y) {
return = x+y;
}
最后,它聲明了這個數組。
private static final Operation[] OPERATIONS = {new Multiply(), new Summation()};
在這里,我試圖在 C++ 中編寫此代碼。 但是我對 C++ 的 OOP 沒有深入的了解。 我完全理解 Java 代碼,但我不能用 C++ 編寫。 你能幫忙嗎?
謝謝你。
首先你應該知道在 c++ 我們沒有接口關鍵字或其他東西。 但在 java 中的接口類似於 c++ class 與純虛擬 ZC1C425268E68385D14AB5074C17A
class Operation
{
public:
virtual int eval(int x, int y) = 0;
}
這很像現在每個繼承 Operation 的 class 都必須執行評估的接口。 在 c++ 中,與 java 不同,我們有多個 inheritance。
現在您可以編寫如下代碼:
class Multiply: public Operation {
public:
int eval(int x, int y) override {
return x*y;
}
}
注意: override 關鍵字很重要。
然后你可以寫:
Operation* a = new Multiply();
但還要注意,您可以將 OOP 代碼轉換為 c++ 世界中的簡單功能代碼。
等等..
鑒於您的最終目標似乎是調用這些東西,我可能建議不要首先制作對象。 C++(以及最新版本的 Java,就此而言)具有一流的功能,這意味着您可以免費編寫函數並將它們視為對象。
#include <vector>
#include <functional>
int add(int x, int y) {
return x + y;
}
int multiply(int x, int y) {
return x * y;
}
int main() {
std::vector<std::function<int(int, int)>> arr { add, multiply };
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.