我刚刚创建了这个新类:
//------------------------------------------------------------------------------
#ifndef MULTITHREADEDVECTOR_H
#define MULTITHREADEDVECTOR_H
//------------------------------------------------------------------------------
#include <vector>
#include <GL/GLFW.h>
//------------------------------------------------------------------------------
template<class T>
class MultithreadedVector {
public:
MultithreadedVector();
void push_back(T data);
void erase(typename std::vector<T>::iterator it);
std::vector<T> get_container();
private:
std::vector<T> container_;
GLFWmutex th_mutex_;
};
//------------------------------------------------------------------------------
#endif // MULTITHREADEDVECTOR_H_INCLUDED
//------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
类的定义:
//------------------------------------------------------------------------------
#include "MultithreadedVector.h"
//------------------------------------------------------------------------------
using namespace std;
//------------------------------------------------------------------------------
template<class T>
MultithreadedVector<T>::MultithreadedVector() {
th_mutex_ = glfwCreateMutex();
}
template<class T>
void MultithreadedVector<T>::push_back(T data) {
glfwLockMutex(th_mutex_);
container_.push_back(data);
glfwUnlockMutex(th_mutex_);
}
template<class T>
void MultithreadedVector<T>::erase(typename vector<T>::iterator it) {
glfwLockMutex(th_mutex_);
container_.erase(it);
glfwUnlockMutex(th_mutex_);
}
template<class T>
vector<T> …Run Code Online (Sandbox Code Playgroud) 当我尝试编译代码时,我收到以下错误消息 -
在函数'__static_initialization_and_destruction_0'中:home/user/main.cpp:50:对'PhysEng2D :: PhysEng2D(void)'的未定义引用
第50行唯一的代码是 -
PhysEng2D Physics;
Run Code Online (Sandbox Code Playgroud)
PhysEng2D的头文件是 -
#ifndef _PHYSENG2D_H_
#define _PHYSENG2D_H_
#include "primitives.h"
class PhysEng2D
{
public:
PhysEng2D::PhysEng2D();
PhysEng2D::~PhysEng2D();
bool IsBoundingBoxCollision(PS2Sprite & S1, PS2Sprite & S2);
bool IsWallCollision(PS2Sprite & S);
};
#endif
Run Code Online (Sandbox Code Playgroud)
PhysEng2D的其余部分的开头是 -
#include "primitives.h"
#include "physeng2d.h"
PhysEng2D::PhysEng2D()
{
//Nothing to Initialise
}
PhysEng2D::~PhysEng2D()
{
//Nothing to clean up
}
Run Code Online (Sandbox Code Playgroud)
(我没有完全包括这些方法因为我认为它们不相关)
对不起,我知道这可能是一个非常愚蠢的小错误,我正在制作.
我在C++中遇到这个错误,我真的不知道如何找到它的底部:
Run Code Online (Sandbox Code Playgroud)g++ proxy.cpp -lboost_thread -lboost_filesystem -lboost_system/tmp/ccUHa2s3.o:在函数`main'中:proxy.cpp :(.text + 0x1d8):未定义引用`
server::server(std::deque<boost::shared_ptr<boost::asio::io_service>, std::allocator<boost::shared_ptr<boost::asio::io_service> > > const&, int)'collect2:ld返回1退出状态
我有以下源代码(我复制了http://alexott.net/common/asio-proxy-async/proxy-conn.cpp.html):
//proxy.cpp:
#include "proxy-server.hpp"
int main(int argc, char** argv) {
try {
int thread_num=2;
if(argc > 1)
thread_num=boost::lexical_cast<int>(argv[1]);
ios_deque io_services;
std::deque<ba::io_service::work> io_service_work;
boost::thread_group thr_grp;
for (int i = 0; i < thread_num; ++i) {
io_service_ptr ios(new ba::io_service);
io_services.push_back(ios);
io_service_work.push_back(ba::io_service::work(*ios));
thr_grp.create_thread(boost::bind(&ba::io_service::run, ios));
}
server server(io_services); //apparently there's some error here?
thr_grp.join_all();
} catch (std::exception& e) {
std::cerr << e.what() << std::endl;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用WinSock.h头文件,但我得到以下任何一个错误:在VS2010(C++)中:
Unresolved External Symbol to [the function included in winsock.g, e.g socket()]
Run Code Online (Sandbox Code Playgroud)
在gcc命令行(C)中:
Undefined Reference to [the function included in winsock.g, e.g socket()]
Run Code Online (Sandbox Code Playgroud)
代码很简单:只包含Winsock.h头文件然后
SOCKET s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
Run Code Online (Sandbox Code Playgroud)
我socket()和closesocket()函数有错误......!我在Stackoverflow中搜索并发现了几个主题,但他们都建议更改头文件.我无法在这里更改WinSock.h,因此我需要在使用头文件的实际代码中使用解决方案.有任何想法吗?
当我编译我的程序时,我得到三个"未定义的引用'PrintArgv(...)'"错误.我搜索过,但找不到我收到这些错误的原因.这是我的代码:
#include "tools.hpp"
enum ARG_T {COMMAND, SWITCH, ARGUMENT};
void ReadArgs(int, char**, ofstream&);
void PrintArgv(char*, ARG_T, ofstream&);
int main(int argc, char* argv[])
{
ofstream fout;
try{
fout.open("P1Ford.txt", ios::out | ios::app);
}
catch(...)
{
//fatal("Could not open file P1Ford.txt");
cout << "Could not open file P1Ford.txt" << "\n";
return -1;
}
ReadArgs(argc, argv, fout);
fout.close();
return 0;
}
/*-----------------------------------------------------------------------------
This function takes the values passed in through the command line
then examines each one to determine if it is the command, a …Run Code Online (Sandbox Code Playgroud) 嗨,在我的程序中,我有两个构造函数;
BinaryImage();
BinaryImage(int MM, int NN, double* input_data, double thresh);
Run Code Online (Sandbox Code Playgroud)
在我的主要;
BinaryImage BinaryImageObj();
Run Code Online (Sandbox Code Playgroud)
编译好,但是当我调用第二个construtor时;
BinaryImage BinaryImageObj2(MM,NN,data,1);
Run Code Online (Sandbox Code Playgroud)
然而这会带来错误;
main.cpp ||未定义的引用`BinaryImage :: BinaryImage(int,int,double*,double)'
它为什么这样做?我错过了一些简单的东西吗?
谢谢
麦克风
此矩阵类构造函数创建对象
Matrix::Matrix(int MM, int NN, double* input_data){
M = MM;
N = NN;
data = new double[M * N];
for ( int i =0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
data[i* N+j] = input_data[i*N+j];
// cout << data[i*N+j] <<"\t";
}
// cout <<"\n";
}
cout << "This …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
menuState.hpp
#ifndef MENU_STATE_HPP
#define MENU_STATE_HPP
#include "state.hpp"
#include <SFML/Graphics.hpp>
class MenuState : public State
{
public:
MenuState();
static void create(StateListener* Parent, const std::string name)
{
MenuState* myState = new MenuState();
myState->parent = Parent;
Parent->manageState(name, myState);
}
void enter();
void exit();
void resume();
private:
};
#endif // MENU_STATE_HPP
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到一个未定义的构造函数引用MenuState* myState = new MenuState();,我不确定为什么因为MenuState :: MenuState()在类声明中的create函数之前.
编辑:我也得到了所有我的sfml函数相同的错误.
这是确切的构建消息:http://pastebin.com/e819FhPj
我确实链接了sfml库,并在我的编译器搜索目录中设置了标题路径.
我试图在单独的文件上制作程序.不幸的是,我在尝试构建代码时遇到了错误.它指向未定义的对constuctors,destructos和函数CzynnikiPierwsze的引用.所以我决定将整个代码放在一个代码中.仍然存在main()函数的问题:未定义引用'CzynnikiPierwsze(int)'任何想法都错了?这是整个代码:
#include <iostream>
#include <cctype>
#include <vector>
using namespace std;
vector<int> CzynnikiPierwsze(int);
class NieprawidlowaDana //wyjatki
{};
class SpozaZakresu
{};
class RozkladLiczby{
private:
int *tab;
public:
RozkladLiczby(int); //konstruktor
vector<int> CzynnikiPierwsze(int); //metoda
~RozkladLiczby();
};
Run Code Online (Sandbox Code Playgroud)
///////////////// CLASS的身体///////////////////////////// ////////
RozkladLiczby::~RozkladLiczby() //destruktor
{}
RozkladLiczby::RozkladLiczby(int n){
int* tab = new int[n+1];
int i,j;
for( i=0;i<=n;i++)
tab[i]=0; //zerujemy tablice
for( i=2;i<=n;i+=2)
tab[i]=2; //zajmujemy sie liczbami parzystymi
for(i=3; i<=n;i+=2)
for(j=i;j<=n;j+=i) //sito erastotesa
if(tab[j]==0)
tab[j]=i;
}
vector<int> RozkladLiczby::CzynnikiPierwsze(int m){
vector<int> tablica;
while(m!=1){
tablica.push_back(tab[m]);
m=m/tab[m];
}
return tablica;
}
////////////////////////END …Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我前几天问过一些我无法解决的c ++代码问题.我接受了每个人关于如何用c ++创建对象的建议,但现在我得到了未定义的引用错误.我正在使用最新的代码块版本并使用它来编译.我已经读过这是因为在编译过程中没有链接某些文件,这意味着我已经在头文件中定义了类但没有在代码中定义,这让我感到困惑,因为从我的理解(教授示例)我宣布对象.
头文件MathObject.h
class MathObject{
private:
int num1;
int num2;
public:
int sum();
MathObject(int n, int m);
};
Run Code Online (Sandbox Code Playgroud)
MathObject文件MathObject.cpp
#include <iostream>
#include "MathObject.h"
using namespace std;
MathObject :: MathObject(int n, int m){
num1 = n;
num2 = m;
}
int MathObject :: sum(){
return num1+num2;
}
Run Code Online (Sandbox Code Playgroud)
主文件
#include <iostream>
#include "MathObject.h"
using namespace std;
int main(int args, char *argv[]){
MathObject *mo = new MathObject(3,4);
int sum = mo -> sum();
MathObject mo2(3,4);
//cout << sum << endl;
return 0; …Run Code Online (Sandbox Code Playgroud) 我试图使用我已经在.c文件上的.h文件中声明的变量,我给了我一个编译错误:
未定义的引用
var
这是mach.c内容:
#include "machheader.h"
int
main( void )
{
var = 1;
printf("Variable %d\n", var);
}
Run Code Online (Sandbox Code Playgroud)
而我的machheader.h只包含这个:
extern int var;
任何的想法?