好吧我不知道怎么解释这个但是这里有。我希望将Dog和Cat类的名称(从返回名称)转换为int main,以便打印出fido.name和spot.name所在的位置。我该怎么做?
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Dog {
private:
// constructor
Dog(string name) {
this->name = name;
name = "Fido";
cout << "Dog's name is " << name << endl;
}
public:
static string name;
static string GetName();
};
string Dog::GetName(){
return name;
}
class Cat {
private :
// constructor
Cat(string name) {
this->name = name;
name = "Fido";
cout << "Cat's name is " << name << endl;
}
public :
static string name;
static string GetName();
};
string Cat::GetName(){
return name;
}
int main() {
Dog fido("Fido"); //error here stating that Dog::Dog(std::string name)
//declared at line 13 is inaccessible
Cat spot("Spot");
cout << "From main, the Dog's name is " << fido.name << endl;
cout << "From main, the Cat's name is " << spot.name << endl;
cout << "Hit any key to continue" << endl;
system("pause");
return 0;
}
答案 0 :(得分:1)
您必须将构造函数设为公共(使用标记&#39; public:&#39;),否则您将无法从类外部创建对象。
此外,删除所有&#39;静态&#39; keyworkds,因为如果你宣布它是静态的,那么你将无法拥有超过1种不同的&#34; Cats&#34;和#34;狗&#34;
我希望它有所帮助
答案 1 :(得分:-1)
使用GetName()
功能。
cout << "From main, the Dog's name is " << fido.GetName() << endl;
cout << "From main, the Cat's name is " << spot.GetName() << endl;
您必须将构造函数移动到
类的public
部分
Dog fido("Fido");
Cat spot("Spot");
工作。
当我进入你的课堂时,我意识到你有更多的错误。 name
需要非static
成员变量,GetName()
需要非static
成员函数 - 在这两个类中。
Dog
需要像:
class Dog {
public:
Dog(string name) {
this->name = name;
}
string GetName() const;
private:
static string name;
};
您必须对Cat
进行类似的更改。