我是c ++ boost的新手,我有一个程序试图编译它
#include "Program.h"
#include <boost/asio/io_service.hpp>
#include <boost/asio/streambuf.hpp>
#include <boost/asio/ip/address.hpp>
#include <boost/asio/ip/udp.hpp>
namespace ConsoleApp
{
void Main(std::wstring& args[])
{
.
.
}
}
出现的错误是
Program.cpp:11:31: error: declaration of ‘args’ as array of references
void Main(std::wstring& args[])
这里的任何人都可以帮助我,这个代码错误了吗? 谢谢
答案 0 :(得分:3)
错误几乎就是说什么。 std::wstring& args[]
是wstring([]
)引用(std::wstring
)的数组(&
)。您不能拥有一系列参考文献 - 请参阅Why are arrays of references illegal?。
注意:你在C ++中进行编码,主要功能应该是:
int main(int argc, char *argv[])
{
// Your code
return 0;
}
修改强>
AFAIK主函数不能在任何命名空间中。
此外,您的代码还有一个问题 - 即使我们可以创建引用数组,也没有存储有关数组长度的信息。除了第一个元素,你无法使用它!
无论如何,您可以执行以下操作(将wstring
替换为string
因为我是懒惰的):
#include <vector>
#include <string>
namespace ConsoleApp
{
void Main(std::vector<std::string> &args)
{
}
}
int main(int argc, char *argv[])
{
std::vector<std::string> args;
args.resize(argc);
for(int i = 0; i < argc; ++i)
{
args[i] = argv[i];
}
ConsoleApp::Main(args);
return 0;
}