【问题标题】:string argv[] redefinition error C++ [duplicate]字符串 argv [] 重新定义错误 C++ [重复]
【发布时间】:2015-09-10 23:23:06
【问题描述】:

当将 string(argv[]) 作为参数传递给类构造函数时,我遇到了重新定义错误。示例代码如下。 cA1 产生了重新定义错误,但所有 cA2、cA3、cA4 和 func 都很好。有人可以帮我吗?

class A
{
public:
    A(string String1, string String2);
    ~A();

};

void func(string String1, string String2)
{

}

void main(int argc, char** argv)
{
    //error C2086: 'std::string argv[]' : redefinition
    A cA1(string(argv[1]), string(argv[2]));

    string String1 = string(argv[1]);
    string String2 = string(argv[2]);
    //fine 
    A cA2(String1, String2);

    //fine 
    A cA3(argv[1], argv[2]);

    //fine
    A cA4(string(argv[1]).c_str(), string(argv[2]).c_str());

    //fine
    func(string(argv[1]), string(argv[2]));
}

【问题讨论】:

  • 你也应该包括你的错误输出。
  • @robert 我把错误输出放在 cmets 上

标签: c++ string constructor argv redefinition


【解决方案1】:

A cA1(string(argv[1]), string(argv[2])); 不会调用您的构造函数,但是,它声明了一个函数名称 cA1'Most vexing parse: why doesn't A a(()); work?',并带有参数 string(argv[1])string(argv[2]) 都具有相同的参数变量名称 argv,因此出现错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多