【发布时间】:2021-07-09 17:20:33
【问题描述】:
.h 文件
public:
Class(int x, int y); //constructor for this question
private:
char (*1dArrayObjectPtr)[size] = nullptr;
char nameof2dArray[notImportantX][size];
初始化Class (*1dArrayObjectPtr)[size] = nullptr;然后赋值有什么区别:
cpp 文件
Class::Class(int x, int y) : x(x), y(y) {1dArrayObjectPtr = nameOf2dArray;};
或:
Class::Class(int x, int y) : x(x), y(y), 1DArrayObjectPtr(nameof2dArray) {};
为什么当我访问时顶部选项会导致分段错误而底部不会导致分段错误:
*(*(1DArrayObjectPtr+i)+j)
要么
1DArrayObject[i][j]
如果我将1DArrayObjectPtr 传递给一个新类,我是否可以迭代它?:
newClass::newClass(char* 1DArrayObjectPtr) : newClassPtr(1DArrayObjectPtr) {};
迭代为*(*(newClassPtr+i)+j) 或newClassPtr[i][j]
还是我将 1dpointer 从 2D 数组更改为其他东西而没有意识到?
【问题讨论】:
-
感谢 MikeCAT 格式帮助!
-
1dArrayObjectPtr绝对不是 C++ 中的有效标识符。 (这不会崩溃 -> 这无法运行 -> 这不会编译。) -
我知道。它的意思是指某种东西而不是字面名称。
-
这是一道概念题
-
我做了一个minimal reproducible example。构造函数中成员的初始化和成员的赋值实际上没有区别(关于构造后的结果):Demo on coliru也许,我把你的问题弄错了......
标签: c++ class pointers header-files class-constructors