我是 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";
}
旁注:我不同意@Sri.U 的回答,现代 C++ 不推荐使用 memcpy
。同样,也不鼓励使用原始数组,因为库提供了更安全的容器(string
和 vector
)。
关于c++ - 将参数数组分配给头文件中定义的类属性(数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34480927/