C ++并初始化const变量

时间:2012-11-16 14:32:46

标签: c++

我想用名为" a"的const int变量创建类Test。之后我需要创建构造函数,其中变量" a"得到的值= 10。我创建了类测试,在test.h中我在Test.h类中创建了const int a;,在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 个答案:

答案 0 :(得分:7)

错误说明了一切,a must be initialized in constructor base/member initializer list

Test::Test(void) : a(10) // Initializer list
{
...
}

答案 1 :(得分:3)

错误告诉您该怎么做

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

BTW我想你会发现代码

tekst[size];

不符合您的预期。可能你的意思是

tekst = new char[size];

答案 2 :(得分:1)

您必须在初始化列表中执行此操作:

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

答案 3 :(得分:0)

a是const,因此您无法分配给它。但是,您必须对其进行初始化。

执行:

Test::Test(void)
:a(10)
{
    ...
}
顺便说一下,tekst[size]可能没有你想的那么做。它什么都没做!

相关问题