1

通常、これは変数を他のクラスからコンストラクターに渡す方法です。

SampleA.cpp

#include SampleA.h
#include <iostream>
using namespace std;

SampleA::SampleA(string text) 
{
    setText(text);
}    

string SampleA::getText() {
    return text; 
}

void SampleA::setText(string text) {
    this->text = text;
}

void SampleA::displayText() {
    string displayText;
    displayText = getText();
    cout << displayText << endl;
}

SampleA.h

#include <iostream>
#ifndef _testing_ SampleA_h
#define _testing_ SampleA_h

class SampleA     {

private:
    std::string text;
public :    
    SampleA() 
    {
        text = ""; 
    };//default constructor

    SampleA(std::string);
    std::string getText();
    void setText(std::string text);   
}; 

main.cpp

  #include <iostream>
  #include SampleA.h
  using namespace std;
  SampleA outputTextValue;

  int main ()  {
     string input;
     cout << "Enter a text" << endl;
     cin >> input;
     //pass the value using SampleA class consturctor
     SampleA storeText(input);
     //output the text from displayText() method from SampleA class
     outputTextValue.displayText(); 
  }

2次元配列でも同じことができるかどうか疑問に思っていました。

または、2次元配列の値を他のクラスからコンストラクターに渡したい場合は、どのアプローチを使用すればよいですか? (※以下のコードは大まかな例ですので間違っています)

SampleA.cpp

#include SampleA.h
#include <iostream>
using namespace std;

SampleA::SampleA(int 2Darray[][2]) 
{
    setText(2Darray[][2]);
}    

string SampleA::get2DArray() {
    return 2Darray[][2]; 
}

void SampleA::set2DArray(string int 2Darray[][2]) {
    this->2Darray[][2] = 2Darray[][2];
}


 void SampleA::displayNumber() {
    cout << get2DArray(); << endl;
}

SampleA.h

#include <iostream>
#ifndef _testing_ SampleA_h
#define _testing_ SampleA_h

class SampleA     {

private:
    int 2Darray[][2];
public :    
    SampleA() 
    {
        2Darray[][2]; 
    };//default constructor

    SampleA(2Darray[][2]);
    std::string get2DArray();
    void set2DArray(2Darray[][2]);   
}; 

main.cpp

  #include <iostream>
  #include SampleA.h
  using namespace std;

  SampleA outputMethod;
  int main ()  {
     int storeValue [2][2];
     for(int i =0; i<2; i++) {
        cout << "Enter first number" << endl;
        cin >> storeValue[i][0];
        cout << "Enter first number" << endl;
        cin >> storeValue[i][1];
   }

     //pass the 2dArray value using SampleA class consturctor
     SampleA storeText(storeValue);
     // output method displayNumber() method from SampleA class
     outputMethod.displayNumber();
  }
4

2 に答える 2

2

はい。ただし、配列が引数として渡されたときにポインターに減衰するため、適切な行列としてではありません。

あなたがしなければならない例えば

class SampleA
{
    int (*some2darray)[2];  // `some2darray` is a pointer to an array of two integers
    size_t size;            // Size of "outer" array

public:
    SampleA(int (*arg)[2], size_t sz)
        : some2darray(arg), size(sz)
    {}

    void displayText() const
    {
        std::cout << "Values = { ";

        for (size_t i = 0; i < size; ++i)
            std::cout << "{ " << some2darray[i][0] << ", " some2darray[i][1] << " } ";

        std::cout << "}\n";
    }
};

次に、例えば

int storeValue[2][2];
...
SampleA store(storeValue, 2);
store.displayText();
于 2013-10-31T07:35:12.623 に答える
0

2D 配列を渡す:

method(array_name);

ブラケットなし サイズ表示なし。

setText(2Darray);
于 2013-10-31T07:34:06.070 に答える