我没有将我的类放在与main函数相同的文件中,而是尝试使用#include。但是,当我这样做时,我的构造函数出错了。这是我的input.cpp文件:
#ifndef input
#define input
using namespace std;
#include <string>
#include <iostream>
class input
{
public:
input(int sent)
{
s = sent;
}
void read();
void store(string s);
private:
int s;
};
#endif
这是我的主要功能:
#include <iostream>
#include <string>
using namespace std;
#include "input.cpp"
int main()
{
cout<<"Hello, please enter your input"<<endl;
string sent;
getline(cin, sent);
cout<<sent;
input1 *newinput = new input1("hello");
system("pause");
return 0;
}
我得到的错误是
“intelliSense期待';'”
在我的构造函数的主体中。但是,当我将类直接复制/粘贴到main.cpp文件中时,错误消失了。有什么原因导致这个问题吗?
答案 0 :(得分:2)
using namespace
input
作为宏常量,类的名称是相同的。我担心这是你问题的根源。input(int sent) : s(sent) {}
UPDT
你可能需要构造函数能够接受字符串作为参数input(const std::string& str1) : str(str1) {}
,其中str
是类成员来处理字符串数据。
答案 1 :(得分:0)
您将构造函数定义为具有int
类型的一个参数input(int sent)
{
s = sent;
}
但尝试将其作为参数传递给字符串文字
input *newinput = new input("hello");
具有类型const char[6]
的字符串文字不能隐式转换为int类型,并且该类没有其他构造函数接受字符数组作为参数。
EDIT:
您已多次更改原始帖子,因此现在不清楚是否在州名中使用名称input1
input1 * newinput = new input1(“hello”);
是拼写错误或者是其他类型。
您还有一个与类名相同的宏定义
#ifndef input
#define input
更改宏名称或类名。