4

4 つの配列がパラメーターとして渡されるクラス呼び出しのコンストラクターを作成しようとしています。*,&と配列自体を使用してみました。ただし、パラメーターの値をクラスの変数に割り当てると、次のエラーが発生します。

 call.cpp: In constructor ‘call::call(int*, int*, char*, char*)’:
 call.cpp:4:15: error: incompatible types in assignment of ‘int*’ to ‘int [8]’
 call.cpp:5:16: error: incompatible types in assignment of ‘int*’ to ‘int [8]’
 call.cpp:6:16: error: incompatible types in assignment of ‘char*’ to ‘char [14]’
 call.cpp:7:16: error: incompatible types in assignment of ‘char*’ to ‘char [14]’  

エラーを見つけて修正するのを手伝ってくれてありがとう。ここに私のコードがあります:

.h ファイル

#ifndef call_h
#define call_h
class call{
private:
    int FROMNU[8]; 
    int DESTNUM[8];
    char INITIME[14]; 
    char ENDTIME[14];

public:
    call(int *,int *,char *,char *);
};
#endif

.cpp ファイル

call:: call(int FROMNU[8],int DESTNUM[8],char INITIME[14],char ENDTIME[14]){
    this->FROMNU=FROMNU;
    this->DESTNUM=DESTNUM;
    this->INITIME=INITIME;
    this->ENDTIME=ENDTIME;
}
4

3 に答える 3

4

生の配列は代入できず、一般的に扱いが困難です。ただし、配列を の中に入れてstruct、それを代入または初期化することができます。本質的にはそういうことstd::arrayです。

例えば、あなたができる

typedef std::array<int, 8>   num_t;
typedef std::array<char, 14> time_t;

class call_t
{
private:
    num_t    from_;
    num_t    dest_;
    time_t   init_;
    time_t   end_;

public:
    call_t(
        num_t const&     from,
        num_t const&     dest,
        time_t const&    init,
        time_t const&    end
        )
        : from_t( from ), dest_( dest ), init_( init ), end_( end )
    {}
};

しかし、これにはまだ本質的な抽象化が欠けているため、技術的な解決策にすぎません。

物事を改善するには、egnum_tが実際に何であるかを考えてください。もしかして、電話番号ですか?次に、そのようにモデル化します。

std::vectorの配列については、標準ライブラリ コンテナーのchar使用も検討してくださいstd::string

于 2013-02-18T00:58:22.640 に答える
1

C++ では、生の配列を引数として渡すことができます。

次のコードを検討してください。

template<size_t array_size>
void f(char (&a)[array_size])
{
    size_t size_of_a = sizeof(a); // size_of_a is 8
}

int main()
{
    char a[8];
    f(a);
}
于 2013-02-18T01:06:30.730 に答える
0

C/C++ では、配列を割り当てることができないthis->FROMNU=FROMNU;ため、メソッドは機能せず、エラーの半分です。

残りの半分は、配列にポインターを割り当てようとすることです。配列を関数に渡したとしても、定義に何と言おうと、それらは最初の要素へのポインターに減衰します。

于 2013-02-18T00:58:47.793 に答える