我的项目设置是
我的项目结构是
├── README.md
├── TrollLanguage
│ ├── TokenParser.cpp
│ ├── TokenParser.hpp
│ └── main.cpp
我的源代码是
main.cpp
#include <iostream>
#include "TokenParser.hpp"
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!\n";
TokenParser *tokenParser = new TokenParser();
tokenParser->TestFunc();
return 0;
}
TokenParser.cpp
#include "TokenParser.hpp"
void TestFunc() {
std::cout << "can u see me?";
}
enter code here
TokenParser.hpp
#ifndef TokenParser_hpp
#define TokenParser_hpp
#include <iostream>
class TokenParser {
public:
void TestFunc();
};
#endif /* TokenParser_hpp */
预期的行为是
Hello, World!
can u see me?
实际行为是
Apple Mach-O Linker (Id) Error
"TokenParser::TestFunc()", referenced from:
Linker command failed with exit code 1(use -v to see invocation
最佳答案
您需要在实现文件中的函数定义之前添加类名。就目前而言,您正在定义一个名为TestFunc
的自由函数。
#include "TokenParser.hpp"
void TokenParser::TestFunc() {
std::cout << "can u see me?";
}