1. ホーム
  2. c++

[解決済み] test *" から "test" に変換するための適切なコンストラクタが存在しない。

2022-02-01 23:39:07

質問

を初めて利用します。 c++ で、コンストラクタとクラスで苦労しています。以下は私のヘッダーファイルです。

#pragma once
#include <string>
using namespace std;
class test
{

    private:
    string name;
    int number;

public:

    test();
    test(string i,int b);
};

これはcppファイルです。

#include "test.h"
#include <string>
using namespace std;


test::test(){}

test::test(string i,int b){
    this->name=i;
    this->number=b;
}

を呼び出そうとすると

test t=new test("rrr",8);

得ることができる。

1   IntelliSense: no suitable constructor exists to convert from "test *" to "test" 

では、クラスが * のように、アスタリクスを付けないクラスがあるのでしょうか?そして、私は何を間違えているのでしょうか?

解決方法は?

Java/C#のバックグラウンドをお持ちの方でしょうか。 t はここでは参照型ではなく、値型です。 new はオブジェクトへのポインタを返します。 ですから、次のどれかが必要です。

test t = test("rrr", 8);
test t("rrr", 8);
test *t = new test("rrr", 8);

もし、あなたがまだポインターについてよく知らないのなら、最後のものは絶対に使わないでください しかし、ポインタのセマンティクスを理解することはかなり重要です。教科書の関連する章を読むことをお勧めします。