gpt4 book ai didi

c++ - 使用 static const char* const 而不是#define

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:46 25 4
gpt4 key购买 nike

我收到错误 error: ‘Name’ was not declared in this scope我在这里错过了什么。

源文件:

#include<iostream>
#include "scr.h"
using namespace std;

const char* const Test::Name;

void Test::Print()
{
cout<<Name;
}

int main()
{
Test *t = new Test();
t->Print();
delete t;
}

头文件:

class Test
{
static const char* const Name = "Product Name";
public:
void Print();
};

编辑:

如果我将 char* const 替换为 int,它就可以工作。为什么?

static const int Name = 4; //in header

const int Test::Name; //In source

该代码的目的是替代 Effective C++ 中提到的 #define。在该示例中,使用了 static const int

最佳答案

您不能在类中初始化静态成员变量。甚至不在头文件中。

头文件:

class Test
{
static const char* const Name;
public:
void Print();
};

在你的cpp文件中:

const char* const Test::Name = "Product Name";

编辑:我必须补充说,初始化只允许用于 int 和枚举,也可以用于可以在编译时计算的常量。

关于c++ - 使用 static const char* const 而不是#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7605934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com