小编Tim*_*ein的帖子

C++将数组传递给函数并读取其成员

在我的c ++程序中,我想将一个数组传递给一个函数,并将该数组的成员打印到控制台.

现在我遇到了两个问题:

int main()
{
    unsigned char numbers[8] = { 1,2,3,4,5,6,7,8 };
    for (auto i = 0; i < sizeof(numbers); i++)
    {
        std::cout << numbers[i] << "\n"; // First Problem: Here i get 
    }
    logger(numbers);
}
Run Code Online (Sandbox Code Playgroud)

传递numberslogger定义为void logger(unsigned char data[])导致类型更改的原因unsigned char *所以没有办法迭代数组,因为大小是未知的.

我的目标也是传递任何大小的数组,但假设数组的大小始终为8,我将签名更改为

logger(&numbers)
void logger(unsigned char(*data)[8])
{
  for (auto i = 0; i < sizeof(*data); i++)
  {
    std::cout << *(data[i]) << "\n";
  }
}
Run Code Online (Sandbox Code Playgroud)

迭代data有第一个问题,输出是``

所以问题是;

  1. 为什么我会得到一个奇怪的ASCII字符cout …

c++ arrays pointers

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

如何制作一个无法实例化的类?

我不希望可以创建此类的对象,但在我的特殊情况下,我不知道如何防止这种情况。

我的想法是:

class abstract
{
  private:
    int foo;

  public:
    abstract();
    virtual void useless_method_to_force_class_to_be_abstract() = 0;
    virtual ~abstract();
};
Run Code Online (Sandbox Code Playgroud)

但这确实不是我认为的最佳实践......

是否有任何技巧可以构建一个概念,以便永远不会发生“我不知道应该将哪种方法设置为纯虚拟”的情况?

c++

0
推荐指数
1
解决办法
948
查看次数

标签 统计

c++ ×2

arrays ×1

pointers ×1