返回对象时使用Visual Studio下划线方法 我使用VisualStudio 2010 Engestand我想创建一个类来读取C++中的INI文件。这对我来说并不难,但当它返回一个对象的引用时,可视化下划线方法对我来说是不清楚的,所以我需要一些帮助
我有两节课。一个是Tokenizer,它读取.ini文件,第二个是Token,它表示一个类似于[Somethink]的令牌 在Tokenizer中,我创建了一个方法,在ini文件中找到新标记时,将新标记添加到std::list返回对象时使用Visual Studio下划线方法 我使用VisualStudio 2010 Engestand我想创建一个类来读取C++中的INI文件。这对我来说并不难,但当它返回一个对象的引用时,可视化下划线方法对我来说是不清楚的,所以我需要一些帮助,c++,object,methods,reference,return,C++,Object,Methods,Reference,Return,我有两节课。一个是Tokenizer,它读取.ini文件,第二个是Token,它表示一个类似于[Somethink]的令牌 在Tokenizer中,我创建了一个方法,在ini文件中找到新标记时,将新标记添加到std::list Token Tokenizer::addToken(string name){ Token newToken(name); data.push_back(newToken); return newToken; } 我需要该引用,以便稍后向其添加p
Token Tokenizer::addToken(string name){
Token newToken(name);
data.push_back(newToken);
return newToken;
}
我需要该引用,以便稍后向其添加pairs key->value。这是令牌的构造函数:
Token::Token(string tokenName){
name = tokenName;
}
一切都应该正常,但事实并非如此。Visual Studio在上面代码中的addToken一词下面划线,表示:
错误:声明与“错误类型>
标记器::addToken(std::字符串名称)”
但宣言是正确的
Token Tokenizer::addToken(string name);
类标记也被定义了,所以对我来说没有意义。有趣的是,当我将返回值的类型更改为VOID并删除返回指令时,一切都正常了
请帮忙。这是我第一次接触C++中的引用和对象编程。你可能已经声明了类中的方法<代码>令牌< /C> >为< /P>
class Tokenizer
{
...
void addToken(string);
...
}
您需要更改它以匹配实际的预期签名
编辑事实证明,这毕竟不是问题所在——本来可能是。下一次,更愿意从原始代码中发布一个最小的工作示例,而不仅仅是一些选定的引号
如果您显示更多的代码,这将更容易。使用我的心灵调试能力,我会猜测令牌
是一个嵌套的类/结构。也就是说,你需要像这样定义它
Tokenizer::Token Tokenizer::addToken(string name){
Token newToken(name);
data.push_back(newToken);
return newToken;
}
我猜名称空间限定为Tokenizer::Token(但可能需要其他内容)
注意另外,不需要完全限定嵌套类型(如果它们可以通过标记器在本地看到),以便
- 方法参数
- 方法体
只是返回类型需要完全限定,IIRC您的令牌类应该在您的令牌化器类之前声明,这样才能工作。你在这么做吗?看起来您正在使用名称空间std代码>-尽量避免这种情况;如果存在类型问题,请在该命名空间的所有对象上使用std::
前缀。是。这就是问题所在。我在类标记器下创建了类标记。在我交换了两个班之后,一切都开始正常了。谢谢你的帮助。不。我写到声明是Token-Tokenizer::addToken(字符串名)@如果这在你的类声明中,那就错了。它应该是tokenaddtoken(std::string name)代码>。我删除了标记器::但没有帮助。无论如何,正确的答案是你在我的问题下的评论。