【发布时间】:2012-07-29 02:04:18
【问题描述】:
最近我一直在学习如何在类中创建方法,这样我只需编写一次方法,对于我实例化的每个类,我都可以调用一个方法,它只适用于对象的变量调用它,我知道如何在仅使用 main.cpp 而没有头文件时执行此操作,但是当我使用类头文件和 cpp 时,我对如何编写它感到困惑。
我有一个类似于我想要实现的代码示例:
#include <iostream>
using namespace::std;
class Object
{
public:
int stuff;
void manageStuff();
Object();
};
void Object::manageStuff()
{
stuff++;
}
Object::Object() : stuff(0) {}
Object object1, object2;
int main() {
for (int i = 0; i < 10; i++)
{
object1.manageStuff();
object2.manageStuff();
cout << object1.stuff << "\n";
cout << object2.stuff << "\n";
}
}
这很好用,允许我有两个 Object 实例和一个为每个实例独立工作的方法,这是我当前的项目:
main.cpp:
#include <iostream>
#include "Test.h"
using namespace std;
int main()
{
Test test;
for (int i = 0; i < 10; i++)
{
test.count(); // Here's my error "undefined reference to Test::count"
}
return 0;
}
测试.cpp
#include <iostream>
#include "Test.h"
using namespace std;
Test::Test()
{
//ctor
}
Test::~Test()
{
//dtor
}
测试.h
#include <iostream>
#ifndef TEST_H
#define TEST_H
class Test
{
public:
Test();
virtual ~Test();
void count();
int counter();
};
#endif // TEST_H
最后是 TestFunctions.h
#include <iostream>
#include "Test.h"
#ifndef TESTFUNCTIONS_H_INCLUDED
#define TESTFUNCTIONS_H_INCLUDED
void Test::count()
{
Test::counter++;
std::cout << Test::counter;
}
#endif // TESTFUNCTIONS_H_INCLUDED
我敢肯定,对于经验更丰富的程序员来说,会有一些非常明显的错误,我看起来有点厚,但任何帮助将不胜感激
谢谢!
【问题讨论】:
-
代码看起来不错。错误可能在于您尝试将其链接以形成可执行文件的方式。
-
这个问题太冗长了,我认为这是一个小问题(而且有数百个重复项)。请把它浓缩成一个小的、独立的例子。不要告诉我们什么有效,只要告诉我们问题所在,并给问题一个更相关的标题。
-
您的变量
test从未在 main.cpp 中初始化。
标签: c++ class methods header instance