我想用名为" 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
答案 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]
可能没有你想的那么做。它什么都没做!