我是cpp语言的新手,我的代码有一个问题,我不知道该如何解决,我在这里查看了其他一些有关此错误的问题,但没有一个答案真正对我有帮助解决问题。 这是我的主要功能:
#include <iostream>
#include "Person.h"
#include <string>
int main() {
Person p2();
Person p1();
std::cout << p1.toString() << std::endl;
return 0;
}
这是我的Person.h文件:
#ifndef PERSON_H_
#define PERSON_H_
#include <string>
class Person {
private:
int age;
std::string name;
int numOfKids;
public:
Person() {
this->age = 0;
this->name = "bob";
this->numOfKids = 5;
}
Person(int agee, std::string namee, int numof);
~Person();
std::string toString();
};
#endif // PERSON_H_
在主函数中,它标记p1.toString()
并说“表达式必须具有类类型”
而且我不知道该怎么办,我尝试了很多事情,但没有一个起作用。
答案 0 :(得分:1)
您写的这类陈述可能含糊不清:
Person p2();
卸下括号或使用'{}'(c ++ 11)应该可以使您清楚:
Person p1{};
Person p2;
答案 1 :(得分:0)
各种要点:
Person(int agee, std::string namee, int numof);
~Person();
std::string toString();
这三个仅被声明,未定义。这将导致来自编译器的未解决的外部符号错误消息。 还更正p1和p2的变量声明。 使用此片段作为方向:
#include <iostream>
class Person
{
private:
int age;
std::string name;
int numOfKids;
public:
Person()
{
this->age = 0;
this->name = "bob";
this->numOfKids = 5;
}
Person(int agee, std::string namee, int numof)
{
// ToDo
}
~Person()
{
// ToDo
}
std::string toString()
{
// ToDo
return "";
}
};
int main()
{
Person p2;
Person p1;
std::cout << p1.toString() << std::endl;
return 0;
}