-1

HDL から C++ への変換を処理しようとしていますが、ちょっとした問題にぶつかりました。Ubuntu で Verilator を使用した変換は簡単ですが、1 つのデータ型に悩まされています。

階層の最上位コードは...

#include <iostream>
#include "VDorQ24Syms.h"
#include "VDorQ24.h"

using namespace std;
// FUNCTIONS
VDorQ24Syms::VDorQ24Syms(VDorQ24* topp, const char* namep)
    // Setup locals
    : vm_namep(namep)
    , vm_activity(false)
    , vm_didInit(false)
    // Setup submodule names
{
    // Pointer to top level
    tOPp = topp;
    // Setup each module's pointers to their submodules
    // Setup each module's pointer back to symbol table (for public functions)
    tOPp->Vconfigure(this, true);
    // Setup scope names
}

関数にデータを渡す

VDorQ24Syms::VDorQ24Syms(VDorQ24* topp, const char* namep)

私が得ていないものです。2 番目のパラメーターは理解しやすいものです。最初は、それほどではありません。

つまり、コンパイラは私が合格することを期待していますか? どのデータ型?

私はそのようにデータを渡したい...

VDorQ24* randomCharacter;
if (VDorQ24Syms(randomCharacter, szAscii) == /*condition*/)
{
    return /*value*/;
}

しかし、「randomCharacter」は初期化されていません。

VDorQ24* randomCharacter = /*How do I initialize this?*/;
4

1 に答える 1

0

あなたの例は完全ではありませんが、これが役立つかもしれません。

あなたの変数randomCharacterはあなたのクラスのインスタンスではなく、あなたのクラスVdorQ24へのポインタです。

変数を初期化する場合は、次のように設定しますnullptr

VdorQ24* randomCharacter = nullptr; // now you can be 100% certain that it's null.

の新しいインスタンスを実際に作成したい場合はVdorQ24、ポインターを忘れて値を使用できます。ここでは、デフォルトのコンストラクターを呼び出します。

// Not a pointer, initialize the instance of your class directly.
VDorQ24 randomCharacter;

//              v---- Here we send a pointer to your variable using the '&' operator.
if (VDorQ24Syms(&randomCharacter, szAscii) == /*condition*/)
{
    return /*value*/;
}

コンストラクターにパラメーターを送信する場合は、次の構文を使用できます。

VDorQ24 randomCharacter{param1, param2};

実際、int や配列であっても、この構文で任意の型を初期化できます。

int a{1};

float b[] = {1.f, 2.f, 3.f};
于 2016-10-21T21:01:26.633 に答える