我正在尝试使用私有变量在单独的文件中创建一个类。 到目前为止,我的类代码是:
在TestClass.h中
#ifndef TESTCLASS_H
#define TESTCLASS_H
#include <string>
using namespace std;
class TestClass
{
private:
string hi;
public:
TestClass(string x);
void set(string x);
void print(int x);
};
#endif
在TestClass.cpp中
#include "TestClass.h"
#include <iostream>
#include <string>
using namespace std;
TestClass::TestClass(string x)
{
cout << "constuct " << x << endl;
}
void set(string x){
hi = x;
}
void print(int x){
if(x == 2)
cout << hi << " x = two\n";
else if(x < -10)
cout << hi << " x < -10\n";
else if(x >= 10)
cout << hi << " x >= 10\n";
else
cout << hi << " x = " << x << endl;
}
当我尝试构建Code :: Blocks时,它说:
但是当我运行它(并且不构建它)时,一切正常。
答案 0 :(得分:18)
您忘了写TestClass::
,如下所示:
void TestClass::set(string x)
//^^^^^^^^^^^this
void TestClass::print(int x)
//^^^^^^^^^^^this
这是必要的,以便编译器可以知道set
和print
是类TestClass
的成员函数。一旦你编写它,使它们成为成员函数,它们就可以访问该类的私人成员。
此外,如果没有 TestClass :: ,set
和print
函数将成为自由函数。
答案 1 :(得分:4)
使用
void TestClass::set(string x){
和
void TestClass::print(int x){
答案 2 :(得分:3)
在.cpp
文件中,您需要将set和print成员函数明确地作为类的一部分,例如:
void TestClass::set(string x){
hi = x;
}
void TestClass::print(int x){
if(x == 2)
cout << hi << " x = two\n";
else if(x < -10)
cout << hi << " x < -10\n";
else if(x >= 10)
cout << hi << " x >= 10\n";
else
cout << hi << " x = " << x << endl;
}
答案 3 :(得分:2)
您没有范围使用类名解析print
和set
函数。
void TestClass::set(string x){
hi = x;
}
void TestClass::print(int x){
if(x == 2)
cout << hi << " x = two\n";
else if(x < -10)
cout << hi << " x < -10\n";
else if(x >= 10)
cout << hi << " x >= 10\n";
else
cout << hi << " x = " << x << endl;
}
答案 4 :(得分:1)
说
void TestClass::set(string x){
而不是
void set(string x){
同样适用于print()。 您将它们声明为全局函数,而不是TestClass的成员函数。
答案 5 :(得分:0)
您的方法未定义为类的方法。尝试使用TestClass :: set和TestClass :: print。
答案 6 :(得分:-1)
-void set(string x) {
+void TestClass:set(string x) {