当试图定义私有变量时,无法编译.cpp文件
Cannot Compile .cpp File When Trying To Define Private Var
我正在尝试编译一个包含。h文件的。cpp文件,然后实现概述的类。
在String.h:using namespace std;
class String
{
private:
int _length;
char *data;
int getCharArraySize(char arr[]);
在String.cpp: #include "String.h"
using namespace std;
/*
* Private vars and methods
*/
int String::_length;
char String::*data;
int String::getCharArraySize(char arr[])
{
//method body
return 0;
}
当我尝试用g++编译时,我得到这个错误:
% g++ String.cpp -c
String.cpp:14:17: error: ‘int String::_length’ is not a static data member of ‘class String’
int String::_length;
我只有String::_length的问题。我最初认为这是由于_length是私有的,但所有其他私有方法/变量,编译得很好。我还需要保留这个。h文件,这样我就不能让它公开。任何帮助将不胜感激!
嗯,正如编译器所说:_length
不是静态成员变量。然而,您通过为其提供自己的定义来将其视为一个。千万不要那样做。只有static成员变量应该这样定义
同样适用于data
。
char*
变量,那么这是错误的:
char String::*data;
,这是正确的:
char* String::data;
词法语法产生的奇怪现象(继承自C)尽管如此,*
是类型的一部分,而不是名称。
相关文章:
- 使用 MEX 编译C++文件
- 获取 clang++:错误:在编译文件系统库的代码时
- 如何交叉编译C++文件
- 使用 MinGW 在 Windows 上的命令行编译C++文件
- 选择特定版本的 Visual Studio 命令行工具包,并根据特定版本的C++运行时环境编译文件
- 解析模板和范围后获取编译文件?
- 我的 PowerShell 脚本无法按预期工作(用于编译C++文件)
- 如何在不制作Visual Studio 2017项目的情况下编译C++文件?
- 'void *' 'void (*) (bool)' 指针使用 c ++ 编译器在 C 中编译文件的错误
- 在没有节点GYP的目标平台上编译C/C 文件
- 生成文件似乎以错误的顺序编译文件
- 编译 C++ 文件失败,因为找不到"ssize_t"的定义
- NeatBeans Makefile:麻烦编译.H文件
- 我无法编译文件系统库
- 在不使用预编译头C++项目中编译 C 文件
- 无法使用 Xcode 和终端在 Mac OS 上使用 OpenGL 库编译 c++ 文件
- 获取编译文件的列表,并由Make Project包含
- MinGW .h 编译文件不起作用:此文件的版本与您运行的 Windows 版本不兼容
- 编译 c++ 文件时出错:未定义的符号
- C++编译文件