c++ - 将参数数组分配给头文件中定义的类属性(数组)

标签 c++ linux

我是 C++ 的新手,想实现一些极其简单的东西,但它不会让我这么做。我已经阅读了很多“分配”或“链接”或“复制”数组的方法,但这些似乎都不起作用。

考虑以下几点:

在文件中:header.h:

using namespace std;

Class Proc
{
    public: static char args;
};

在文件中:main.cpp:

using namespace std;

#include <cstdlib>
#include <memory>
#include "header.h"

int main(int argc, char* argv[])
{
    Proc::args = argv;                // yea i know this won't work :(
    // Proc::args[argc] = argv;       // not working either
    // memcpy(argv, Proc::args, sizeof(argv));   // nope
    // copy(begin(argv), end(argv), begin(Proc.args));   // nope
}

事实上我根本不想“复制”它,链接它就好了,但是 g++ 编译器一直在我面前吐出 undefined reference to 'Proc::args' 谁知道还有什么。

我要在耳朵上放一个钻头,谁能举个例子吗?

它不同于 undefined reference to'Proc::args'因为我还得到:error: invalid use of qualified-name 'Proc::args' 并且它提示 char**&char* 不一样...... - 当我向 Proc 的 char* args 添加星号时,它会抛出更多。

最佳答案

如果我没理解错的话,您想将命令行参数复制到某个变量中。

这是一种方法,即复制。也可以在原始数据上保存一个指针,但通常不值得这样做。

struct Proc
{
   std::vector<std::string> args;
   Proc( int argc, char* argv[] )
   {
      for( size_t i=0; i<(size_t)argc; ++i )
         args.push_back( argv[i] );
   }
};

int main(int argc, char* argv[])
{
    Proc cla( argc, argv ); // saves cl args into variable
    for( const auto& c: cla.args ) // print out
      std::cout << c << "\n";
}

Live here

旁注:我不同意@Sri.U 的回答,现代 C++ 不推荐使用 memcpy。同样,也不鼓励使用原始数组,因为库提供了更安全的容器(stringvector)。

关于c++ - 将参数数组分配给头文件中定义的类属性(数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34480927/

相关文章:

c++ - 在 IPP 2019 中使用 Cubic 调整大小比 IPP 5.2 慢

linux - 作为参数传递时删除字符串的内部引号

c - 为什么我不能在 gdb 中打印出环境变量?

c++ - C++中静态多态性背后的动机是什么?

c++ - Qt - QCalendarWidget 删除所有 TextFormats

c++ - 无法推导模板参数

linux - 认证代理

iphone - undefined symbol : . objc_class_name_UIScreen

linux - 以编程方式检查内存页面状态

c++ - 如何对两个数组进行排序,同时保持它们连接到同一元素?