【发布时间】:2012-05-06 15:19:49
【问题描述】:
我在处理 C++ 中的 C 风格字符串时遇到了一些麻烦。简而言之,我要做的是将我的 main 方法中的 cstring 传递给我的一个对象的构造函数。
例如
class sample
{
public: // Initalization
Sample( const char * inFile);
}//End sample class
然后在main方法中。
//Main method
int main ( int argc, const char * argv[] )
{
Sample aSample(argv[1]);
}
现在,根据我的假设,当我使用 argv[1] 取消引用第二个指针时,我应该得到一个 const char*。据我了解,char *argv[] 只是 char **argv 的另一种说法。
另外,为了确保我对 const 的理解是正确的,const char * 说“这个指针指向一个 const char”,而 const char const * 说“这个指针地址不能改变,它指向的地址to 也是 const”。
更新-
只是为了澄清这是一个两部分的问题。
- 如果示例中的构造函数对于传递 cstring 不正确,我该如何更正?
- 对 const 的理解
更新了我上面的错误陈述,即当它应该是“第二个”时,我取消了“第一个”指针的引用。感谢您在下面指出这一点。
第二次更新 - 我使用 argv[1] 是因为我从命令行接收信息,而 argv[0] 仅包含我不感兴趣的可执行文件的路径。
非常感谢任何帮助。
-弗莱迪
【问题讨论】:
-
是的,我收到一个错误,即我试图调用的构造函数的符号未定义。 "Simple::Simple(char const*),引用自:unit.o 中的_Main 这就是为什么我问我对const 的理解是正确的。我认为我的论点的接口可能不正确。
-
啊——好吧,这只是意味着你还没有定义示例构造函数应该做什么。你已经声明了它,但没有定义它。
-
我开始认为这可能是我正在使用的 IDE 的问题。我试图清理和重建,但我已经在我的 .cpp 文件中完全定义了构造函数。
-
您有多个 .cpp 文件吗?
-
看起来像是链接器错误,而不是编译器错误。