0

「a」という名前の const int 変数を持つクラス Test を作成したいと思います。その後、変数「a」が値=10を取得するコンストラクターを作成する必要があります。クラスtestを作成し、test.hconst int a;でクラスTest.hで作成し、test.cppで次のようなものを作成します。

#include "stdafx.h"
#include "Test.h"


Test::Test(void)
{
    a = 10;
    b = 20;
    size = 20;
    tekst[size];
    }

Test::~Test(void)
{
}

これはtest.hです:

#pragma once
class Test
{

    const int a;  



public:
    Test(void);
    ~Test(void);
    int b;
    char *tekst;
    int size;
    static double d;
    int y;
};

しかし、私はエラーが発生します:

Error   1   error C2758: 'Test::a' : must be initialized in constructor base/member initializer list    c:\users\bożydar\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\test.cpp 6
Error   2   error C2166: l-value specifies const object c:\users\bożydar\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\test.cpp 7
4

4 に答える 4

7

エラーはそれをすべて言います、a must be initialized in constructor base/member initializer list

Test::Test(void) : a(10) // Initializer list
{
...
}
于 2012-11-16T14:34:04.090 に答える
3

エラーは何をすべきかを教えてくれます

Test::Test(void) : a(10) // an initializer list
{
    b = 20;
    size = 20;
    tekst[size];
}

ところで、コードがわかると思います

tekst[size];

あなたが期待することをしません。おそらくあなたが意味する

tekst = new char[size];
于 2012-11-16T14:34:11.007 に答える
1

初期化リストでそれを行う必要があります:

Test::Test(void) : a(10) {
  ...
}
于 2012-11-16T14:35:14.437 に答える
0

aは const であるため、代入できません。ただし、初期化する必要があります。

行う:

Test::Test(void)
:a(10)
{
    ...
}

ところで、tekst[size]おそらくあなたが思っていることをしません。それは何もしません!

于 2012-11-16T14:35:31.397 に答える