簡體   English   中英

如何將我寫入的對象傳遞給另一個類的構造函數?

[英]How can I pass an object I wrote into a constructor of another class?

我正在實現一個 Duplicator 類,它允許我復制游戲對象。 我需要能夠創建一個與我擁有的相同的 Game 對象。 這存在於具有其他幾個類(例如 Board 和 Space)的棋盤游戲的更大實現中。

我有兩個用於 Duplicator 類的文件:

復制器.h

#ifndef DUPLICATOR_H
#define DUPLICATOR_H

#include <Rcpp.h>
#include <stack>
#include "Game.h"

using namespace Rcpp;


class Duplicator {
private:
  Game gameObj = Game(5);
public:
  Duplicator(Game g);
  // Game genDuplicate();
};
#endif

復制器.cpp

#include <Rcpp.h>
#include <vector>
#include "Game.h"
#include "Duplicator.h"

using namespace Rcpp;




Duplicator::Duplicator(Game g){
  gameObj = g;
}



RCPP_EXPOSED_CLASS(Duplicator)
  RCPP_MODULE(duplicator_cpp) {

    class_<Duplicator>("Duplicator")
    .constructor<Game>()
    ;

我不斷收到的錯誤是:

沒有用於初始化“游戲”的匹配構造函數

游戲類包含在兩個文件中。

游戲.h

#ifndef GAME_H
#define GAME_H

#include <Rcpp.h>

using namespace Rcpp;

class Game {
private:
  int id;
public:
  Game(int n);
};

#endif

游戲.cpp

#include <Rcpp.h>
#include "Game.h"

using namespace Rcpp;

Game::Game(int n){
  id = n;
}


RCPP_EXPOSED_CLASS(Game)
  RCPP_MODULE(game_cpp) {

    class_<Game>("Game")
    .constructor<int>()
    ;
  }

我不太確定我需要做什么。 似乎我需要在 Duplicator 類中為 Game 提供一個構造函數。

您必須將RCPP_EXPOSED_CLASS(...)移動RCPP_EXPOSED_CLASS(...)文件中,至少當您想將該類用作其他編譯單元中的參數或返回類型時。 否則編譯器不知道例如Game可以轉換為SEXP ,反之亦然。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM