错误“在定义方法时,C++ 要求所有声明都使用类型说明符”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19800091/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Error "C++ requires a type specifier for all declarations whilst defining methods"
提问by Lorienas
I'm relatively new to C++ (so try and keep answers simple please!), and I can't understand why I get the error: C++ requires a type specifier for all declarations whilst defining methods.
我对 C++ 比较陌生(所以请尽量保持答案简单!),我不明白为什么会出现错误: C++ requires a type specifier for all declarations whilst defining methods.
I am trying to write a simple program to read a text file line by line, store the values into an array. However I am encountering an issue when trying to declare methods in my .cpp file. Please find code below.
我正在尝试编写一个简单的程序来逐行读取文本文件,将值存储到数组中。但是,当我尝试在我的 .cpp 文件中声明方法时遇到了一个问题。请在下面找到代码。
StringList.h
字符串列表.h
#ifndef StringListH
#define StringListH
#include <vector>
#include <string>
class StringList {
public:
StringList();
~StringList();
void PrintWords();
private:
size_t numberOfLines;
std::vector<std::string> str;
};
#endif
StringList.cpp
字符串列表.cpp
#include "StringList.h"
#include <fstream>
#include <istream>
#include <algorithm> // std::copy
#include <iterator> // istream_iterator
using namespace std;
StringList::StringList()
{
ifstream myfile("input.in");
if (myfile.is_open())
{
copy(
istream_iterator<string>(myfile),
istream_iterator<string>(),
back_inserter(str));
}
numberOfLines = str.size();
}
StringList::~StringList(){
//Deconstructor
}
// Error Happens Here
StringList::PrintWords(){
//Print My array
}
I have googled to no avail, I don't quite understand how to read the proper documentation for C++ yet, so I'm a little stuck. I have written around 3 or 4 (simple) object orientated programs so far and I've never had this issue. If it helps I'm using Xcode, but I get the same error in eclipse.
我用谷歌搜索无济于事,我还不太明白如何阅读 C++ 的正确文档,所以我有点卡住了。到目前为止,我已经编写了大约 3 或 4 个(简单的)面向对象的程序,但我从未遇到过这个问题。如果它有助于我使用 Xcode,但我在 eclipse 中遇到相同的错误。
It appears any method, regardless of return type, name, parameters defined in my head file give this error - however the constructor is fine. If PrintWords() is remove the project builds just fine.
似乎任何方法,无论返回类型、名称、参数在我的头文件中定义如何都会出现此错误 - 但是构造函数很好。如果 PrintWords() 被删除,项目构建就好了。
Any pointers will be very much appreciated!
任何指针将不胜感激!
回答by stellarossa
you declared it as void
but you forgot to put it in the definition. should be:
您将其声明为,void
但您忘记将其放入定义中。应该:
void StringList::PrintWords()
void StringList::PrintWords()
回答by 0x499602D2
Your member function PrintWords
is prototyped as:
您的成员函数PrintWords
原型为:
void PrintOn();
Meaning it returns void
. When you implement your function elsewhere you still have to provide the return type, which you've mistakenly left out:
意思是它返回void
。当你在别处实现你的函数时,你仍然需要提供返回类型,你错误地忽略了它:
/* void */ StringList::PrintOn() { ... }
回答by Scott Mermelstein
Put a void
in front of the line giving you issues.
void
在给你问题的行前面放一个。
Even though it feels redundant, you have to specify the return type both in the declaration and the implementation.
即使感觉多余,您也必须在声明和实现中指定返回类型。