小编Luc*_*utz的帖子

C++ 智能指针地址

我对智能指针有点困惑。在下面的代码中, & 运算符应该返回智能指针分配的地址还是它控制的指针的地址?

main() {
    std::shared_ptr<int> i = std::shared_ptr<int>(new int(1));
    std::shared_ptr<int> j = i;
    printf("(%p, %p)\n", &i, &j);
}
Run Code Online (Sandbox Code Playgroud)

运行代码,我得到了不同的地址。如果我使用原始指针运行等效代码,我会得到相同的地址:

main() {
    int e = 1;
    int *k = &e;
    int *l = k;

    printf("(%p, %p)\n",k,l);
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers smart-pointers

13
推荐指数
1
解决办法
2万
查看次数

C++ Java static final等价物

我正在使用C++编写国际象棋游戏.我想为类Board创建两个类属性:ROWS和COLUMNS.在Java中,我会将它们声明为静态final,一切都会按照我的意愿运行.我如何用C++做同样的声明?我需要通过其他类中的"Board :: ROWS"和"Board :: COLUMNS"来访问这些属性.

我所拥有的就是抛出编译错误,因为ROWS和COLUMNS没有在m_TileMap声明的范围内声明.如果不使用#define语句,这样做是否有良好的做法?

class Board {
  Tile *m_TileMap[ROWS][COLUMNS];

public:
  static const int ROWS = 8;
  static const int COLUMNS = 8;

  Board(int m[ROWS][COLUMNS]);
}
Run Code Online (Sandbox Code Playgroud)

c++ static const declaration

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×2

const ×1

declaration ×1

pointers ×1

smart-pointers ×1

static ×1